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");
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。