SpringBoot如何实现其他普通类调用Spring管理的Service,dao等bean
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章将为大家详细讲解有关SpringBoot如何实现其他普通类调用Spring管理的Service,dao等bean,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获
千家信息网最后更新 2025年11月08日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 static T 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 static T 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安全错误
数据库的锁怎样保障安全
格来云没有服务器
网络安全模式无声音
信息工程系计算机网络技术专业
服务器安装后怎么装系统
整套网络安全制度
android判断数据库
汉诺威用什么服务器好
第三次全国国土调查数据库概况
合肥国企软件开发公司
数据库查询多个相同字段合并
无限网络的dns服务器怎么设置
银川网络安全宣传周
服务器网关实拍
上海大型网络技术应用范围
服务器配置高的电脑游戏
医院his软件开发商
power服务器支持哪些系统
国家实现网络安全保护制度
手机服务器与电脑
figma的服务器在哪里
软件开发南哥
哪个图书馆有人民日报数据库
网络安全信息等级测评
网络安全学习心得50字
海乐打印机数据库
绍兴软件开发找哪家
查询数据库是否坏了
深圳鹏成互联网科技
网络安全攻防设备
浏信网络技术