SpringBoot如何实现其他普通类调用Spring管理的Service,dao等bean
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,这篇文章将为大家详细讲解有关SpringBoot如何实现其他普通类调用Spring管理的Service,dao等bean,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获
千家信息网最后更新 2025年01月24日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安全错误
数据库的锁怎样保障安全
安徽gpu服务器租用公司
网络安全违规的定级依据
管家婆数据库位置
关于rac数据库的各类文件
网络技术开发代理商
成人本科有没有招网络安全的
dell单路服务器做raid
ef批量更新数据库
一般遇到网络安全后你会怎么做
家里电脑如何成为web服务器
软件开发工具和技术怎么写
软件开发可以使用破解软件吗
从云端恢复显示服务器异常
浏阳市软件开发培训机构
青岛利佳汇网络技术有限公司
上海市计算机软件开发中心闵行
抖音自动刷机软件开发
基因网络技术
北京盈科软件开发有限公司
数据库数据安全性
网络安全白皮书书
驱动程序如何在服务器系统上运行
网络安全防范范围
青岛定制软件开发推荐
即时通讯软件开发几多钱
数据库服务器时间设置
jsp前段链接数据库
成都农牧云网络技术有限公司
律溶软件开发是培训吗
k8s部署服务器硬件要求 生产