springboot 使用上下文获取bean
问题
在使用springboot开发项目过程中,有些时候可能出现说会有在spring容器加载前就需要注入bean的类,这个时候如果直接使用@Autowire注解,则会出现控制针异常!
解决办法
如下:
创建一个springContextUtil类
packagecn.eangaie.appcloud.util;
importorg.springframework.context.ApplicationContext;
publicclassSpringContextUtil{
privatestaticApplicationContextapplicationContext;
//获取上下文
publicstaticApplicationContextgetApplicationContext(){
returnapplicationContext;
}
//设置上下文
publicstaticvoidsetApplicationContext(ApplicationContextapplicationContext){
SpringContextUtil.applicationContext=applicationContext;
}
//通过名字获取上下文中的bean
publicstaticObjectgetBean(Stringname){
returnapplicationContext.getBean(name);
}
//通过类型获取上下文中的bean
publicstaticObjectgetBean(Class>requiredType){
returnapplicationContext.getBean(requiredType);
}
}
在AppcloudApplication.class启动类里边,将初始化该类,并将context注入进去
publicclassAppcloudApplication{
publicstaticvoidmain(String[]args){
ApplicationContextcontext=SpringApplication.run(AppcloudApplication.class,args);
SpringContextUtil.setApplicationContext(context);
}
}
在需要注入bean的地方,使用getBean(bean名称)的方式获取
MessageTemplateControllermessageTemplateController=(MessageTemplateController)SpringContextUtil.getBean("messageTemplateController");
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
热门推荐
10 妈咪跟我生日祝福语简短
11 虎年贺卡和祝福语简短
12 回归岗位文案祝福语简短
13 牛年企业祝福语简短大气
14 微信立冬祝福语简短
15 鼠年同事祝福语简短创意
16 升职加薪的祝福语简短
17 宝宝老公生日祝福语简短
18 姐妹生日祝福语女孩简短