SpringBoot如何实现其他普通类调用Spring管理的Service,dao等bean
发表于:2024-10-25 作者:千家信息网编辑
千家信息网最后更新 2024年10月25日,这篇文章将为大家详细讲解有关SpringBoot如何实现其他普通类调用Spring管理的Service,dao等bean,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获
千家信息网最后更新 2024年10月25日SpringBoot如何实现其他普通类调用Spring管理的Service,dao等bean
这篇文章将为大家详细讲解有关SpringBoot如何实现其他普通类调用Spring管理的Service,dao等bean,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
普通类调用Spring管理的Service、dao等bean
在springboot的使用中,有时需要在其他的普通类中调用托管给spring的dao或者service,从而去操作数据库。网上大多数的资料都是说添加一些注解什么的,但是这都是不行的。
举个使用情景
比如在服务器在于硬件或者客户端之间进行Socket通讯时,那么如果说服务器收到了一条消息,需要去操作数据库的话,怎么去调用Service或者dao去操作数据库呢?
下面来看我给出的解决办法
(1)首先需要新建一个类,实现 ApplicationContextAware 接口。
@Component public class SpringUtils implements ApplicationContextAware { private static ApplicationContext applicationContext = null; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { if(SpringUtils.applicationContext == null){ SpringUtils.applicationContext = applicationContext; } } //获取applicationContext public static ApplicationContext getApplicationContext() { return applicationContext; } //通过name获取 Bean. public static Object getBean(String name){ return getApplicationContext().getBean(name); } //通过class获取Bean. public staticT getBean(Class clazz){ return getApplicationContext().getBean(clazz); } //通过name,以及Clazz返回指定的Bean public static T getBean(String name,Class clazz){ return getApplicationContext().getBean(name, clazz); } }
(2)在通讯类中获取ApplicationContext对象,然后去获取需要的service 或者 dao。
然后就可以直接调用了。
普通类中使用service、dao层中的类,只需三步
在一个web项目的jsp中想要使用service中的一个类来获取数据库中的数据,但是用完之后报错说是空指针异常,上网查了之后总结了一下解决办法,只需三步。
1、写一个工具类 SpringUtil
package com.shop.util;import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;public final class SpringUtil implements ApplicationContextAware { private static ApplicationContext applicationContext = null; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { // TODO Auto-generated method stub if (SpringUtil.applicationContext == null) { SpringUtil.applicationContext = applicationContext; System.out.println( "========ApplicationContext配置成功,在普通类可以通过调用ToolSpring.getAppContext()获取applicationContext对象,applicationContext=" + applicationContext + "========"); } } public static ApplicationContext getApplicationContext() { return applicationContext; } //通过 public static Object getBean(String name) { return getApplicationContext().getBean(name); } //通过class获取Bean. public staticT getBean(Class clazz){ return getApplicationContext().getBean(clazz); }}
2、在Application启动类中将工具类导入
不然依然无法使用
3、在ApplicationTests测试类中调用
package com.shop.JZShop;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringRunner;import com.shop.serviceImpl.GoodsServiceImpl;import com.shop.util.SpringUtil;@RunWith(SpringRunner.class)@SpringBootTestpublic class JzShopApplicationTests { @Test public void contextLoads() { //GoodsServiceImpl为我想要获取的service层中的类 GoodsServiceImpl goodsServiceImpl = (GoodsServiceImpl)SpringUtil.getBean(GoodsServiceImpl.class); System.out.println(goodsServiceImpl.getGoodsByID(27).getGoodsName()); }}
关于"SpringBoot如何实现其他普通类调用Spring管理的Service,dao等bean"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
普通
数据
数据库
管理
篇文章
办法
只需
对象
工具
更多
服务器
通讯
服务
不行
不错
实用
成功
中将
之间
内容
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
浙江hp服务器阵列卡缓存电池
宽带ip网络技术
数据库实验创建存储函数
嘉定区网络技术开发市场价格
可科网络技术有限公司 电话
幻塔服务器已有角色查询
网络安全2015
哈密服务器设备维保公司
辉昱通讯网络安全吗
常见的数据库表的设计
哈密录音软件开发
以网络安全为主题板报水彩
明源数据库面试
国家鼓励的工业软件开发的核心
学生信息数据库
c语言算网络技术吗
网络安全认知讨论
战舰世界服务器无法登录
安全生产基础数据库
如何看国产服务器芯片
荆州虚拟仪器软件开发
什么主板比较适合服务器
山东计算机软件开发需要多少钱
河南机架式服务器机箱定制云空间
采集服务器中管理者服务
授予操作权限数据库
老台式电脑改服务器
删除数据库中所有表
棋牌游戏软件开发有哪些
珠海网络安全公司科创板受理