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安全错误
数据库的锁怎样保障安全
高压直流服务器电源模块
徐州可视化智慧消防软件开发
jade自带数据库
doris 数据库管理工具
金蝶软件开发语言
csgo服务器配置文件设置
sql 数据库默认排序
idea里面的数据库如何使用
公安部三所网络安全等保认证
redis 选择数据库
浦江租房软件开发
苹果机服务器在哪里着
梦幻西游1年外和3年内的服务器
计算机网络技术基础项目视频
工信部做好网络安全工作
如何把字典导入数据库mysql
csgo国服陀螺有哪些服务器
如何在dos下登录数据库
黑客网络技术的网站
亚马逊服务器注册
辽宁软件开发公司
魔兽怀旧服国服开几个服务器
c语言用txt的数据库
互联网科技热讯
鼻烟任务数据库
一个www服务器通常被称为
网络安全扫描主要有哪些类型
access数据库还原功能
用ef操纵数据库
无锡海航软件开发售后服务