之前分享过一篇文章
最近遇到的一个问题是,我在改写我的项目,从传统的XML实例化service改成使用注解实例化。
在部分代码里还保持着 BeanUtil.getBean("")的地方。
所以运行时就爆出了java.lang.NullPointerException: null
这是因为类字节码(静态都已经初始化),再初始化Spring容器,注入的时候又不会去动静态属性。所以 一直都是空。
我没太深究。
就写了一个applicationContext的注入。@Autowired
private static ApplicationContext applicationContext;
@Autowired
private ApplicationContext applicationContext2;
@PostConstruct
public void initApplicationContext(){
BeanUtil.applicationContext = applicationContext2;
}
为什么要这么写?
可以参考:
这样就算注解,我也可以用这个静态方法了。