老萌新今天在开发的时候遇到的问题
想要在Qrtz定时任务的task类中调用service的一些方法来定时写数据库,发现@Autowired注入为空,之前也遇到过类似的问题,初步判断是bean注入顺序问题,在spring启动,定时任务的初始化时,service的bean还没有注册好
-
尝试用
SpringContextUtils.getBean()解决仍然报错,这次换SpringContextUtils为空指针了,注入顺序依然有问题
经过长时间搜索尝试,用了
@PostConstruct终于解决了
总结
其实还是没太弄懂为何@Autowired注入为空,按理说@Component应该是比较靠后的执行了,service为什么还没有注册到容器中?注入为空是因为注册顺序的问题吗?
解决办法是将service变为静态变量static,从而把问题转变为static和@Autowired的加载顺序问题。
其次就是@PostConstruct所带来的副作用,虽然对于我这个小项目没什么影响,但是还是想知道有没有更好的解决办法?