关于ApplicationContextAware实现类空指针问题
在static代码块中调用spring容器获取是很危险的,因为你无法保证是spring初始化先完成还是static代码块先执行。
修改方案是:将dictService
的初始化改成懒加载方式。即当真正需要调用的时候,去判断dictService
是否为空,如果为空则从spring上下文中取。
当然最好还是将DictBizCache
也交给spring管理。
启动过程中,非容器类你要用这ApplicationContextAware,那你就要各种小心了,
static代码这里,这个类是不是交给容器管理了,是的话,别用static,通过InitializingBean去做回调获取容器bean,
如果static代码所在的类没有被交给容器管理,那这挺麻烦,需要严格知道触发时机才能玩