Springboot怎么通过自定义工具类获取bean
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,这篇文章主要为大家展示了"Springboot怎么通过自定义工具类获取bean",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Springboot怎么通过自
千家信息网最后更新 2025年01月21日Springboot怎么通过自定义工具类获取bean
这篇文章主要为大家展示了"Springboot怎么通过自定义工具类获取bean",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Springboot怎么通过自定义工具类获取bean"这篇文章吧。
Springboot 自定义工具类获取bean
/** * Created with IntelliJ IDEA. * * @Auther: zp * @Date: 2021/03/26/13:32 * @Description: 通过beanFactory获取spring管理的bean对象工具类 */@Componentpublic class ApplicationContextUtil implements ApplicationContextAware { private static ApplicationContext context; // springboot加载完成后会把beanfactory作为参数传给次方法,然后我们可以把工厂赋值给context。 @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { context = applicationContext; } // 通过context获取bean public static Object getBean(String beanName) { return context.getBean(beanName); }}
在工具类注入bean的三种方式
1. 需求/目的
比如:在进行使用HandlerInterceptorAdapter拦截器时,需要访问数据库来判断是否拦截请求,这时就需要在拦截器的判断类中注入Dao或Service对象来执行sql语句。而直接使用@Autowired无法进行注入。
2.使用环境
spring boot 2.0.3
3.方法一:获取ApplicationContext上下文
在applicationContext对象中可以获取到所有的bean
第一步:准备ApplicationContextAware的实现类,用于获取applicationContext对象
import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;import org.springframework.stereotype.Component;import com.authstr.ff.utils.exception.Assert;@Componentpublic class SpringUtils implements ApplicationContextAware { private static Log log = LogFactory.getLog(SpringUtils.class); private static ApplicationContext applicationContext; public void setApplicationContext(ApplicationContext applicationContext) { SpringUtils.applicationContext = applicationContext; } private static ApplicationContext getContext() { return applicationContext; } public static Object getBean(String beanId) { return SpringUtils.getBean(Object.class, beanId); } public staticT getBean(Class clazz, String beanId) throws ClassCastException { ApplicationContext context = SpringUtils.getContext(); Assert.isTrue(StringUtils.hasText(beanId), "beanId must not null!",true); boolean a=context.containsBean(beanId); Assert.isTrue(context.containsBean(beanId), "beanId :[" + beanId + "] is not exist!",true); Object bean = null; bean = context.getBean(beanId); return (T)bean; }}
这是已经写好的工具类,可以根据bean的id获取对应的bean
第二步: 对要获取的bean设置id
如:
@Component("basicDaoImpl")public class BasicDaoImpl extends AbstractDao implements BasicDao
第三步: 在要使用的类中写一个方便调用的方法
public BasicDaoImpl getBasicDaoImpl (){ return SpringUtils.getBean(BasicDaoImpl .class, "basicDaoImpl"); }
4.方法二:将工具类的对象也添加为bean
第一步:当前类添加@Component注解
第二步:对要获取的对象使用@Autowired 注解
@Autowired private BasicDaoImpl basicDaoImpl;
第三步:在创建该工具类的地方,这样定义
@Bean public AuthInterceptor authInterceptor(){ return new AuthInterceptor(); }
5.方法三:在spring Boot 启动时创建工具类自身的静态对象
在本质上,同方法二
第一步:当前类添加@Component注解
第二步:在工具类创建一个自身的静态对象
public static AuthInterceptor authInterceptor;
第三步:使用@PostConstruct注解,在springboot加载时执行该方法
@PostConstruct public void init() { authInterceptor= this; AuthInterceptor .authInterceptor= this.authInterceptor; }
以上是"Springboot怎么通过自定义工具类获取bean"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
工具
对象
方法
注解
内容
篇文章
静态
拦截器
学习
帮助
上下
上下文
参数
地方
工厂
数据
数据库
方式
易懂
更多
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全胡雪斌
网络安全清单公司有哪些
软件著作就是软件开发吗
戴尔t620服务器主板型号
对于网络安全的感想和总结
南瑞轨道交通软件开发
软件开发是年轻化行业吗
数据库中表格只能填男或女
用友数据库表关系
海贝网络技术有限公司
电子软件开发部门经理年收入
杭州包拯互联网科技有限公司外包
职高计算机网络技术书
网站服务器租用合同
直播软件开发咨询
戴尔服务器管理平台默认密码
网络技术公司公众号
检查服务器是否正常工作
互联网数据库2021年真题
数据库加权扩展方案
dell服务器默认raid0
网络安全use
服务器 企业邮箱
网络安全手抄报难度一点
华为手机在哪里找同步数据库
网络安全知识你应如何去做
金三期数据库备份文件名
中国有哪些网络安全大赛
软件开发 系统软件
网络数据库技术工作