解决 注入Bean为null的问题 ApplicationContext Spring 上下文对象
程序员文章站
2022-05-23 10:26:11
...
做项目的时候在使用一些其他框架的时候 发现Autowired 为NULL 查阅了一些资料发现以下这个方法可以解决这个问题
1.创建SpringContextUtil类
package com.example.demo.Confi;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import java.util.Locale;
/**
* @Author:linjunbo
* @Description: 解决been注入为null的问题
* @Date: 2020/1/10 8:47
*/
public class SpringContextUtil implements ApplicationContextAware {
// Spring上下文对象.静态变量,可在任何代码任何地方任何时候中取出ApplicaitonContext(spring的容器).
private static ApplicationContext context;
@Override
// @SuppressWarnings("static-access")
public void setApplicationContext(ApplicationContext contex)
throws BeansException {
// TODO Auto-generated method stub
this.context = contex;
}
public static Object getBean(String beanName) {
return context.getBean(beanName);
}
public static String getMessage(String key) {
return context.getMessage(key, null, Locale.getDefault());
}
}
2.在java配置文件中将SpringContextUtil加入spring容器里
@Bean(name = "SpringContextUtil")
public SpringContextUtil jobFactory(){
return new SpringContextUtil();
}
3. 使用
RoomElectricDayService roomElectricDayService =(RoomElectricDayService)SpringContextUtil.getBean("RoomElectricDayServiceImpl");