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 周末祝福语简短有内涵