Spring boot里面线程类里面调用service
2017-09-01 本文已影响0人
黛雨
用model、service和controller实现了从数据查询数据的功能后,想要在普通线程类里面调用service的方法过程中就遇到一系列的问题。下面挨个做些笔记,以防下次遇到。
1.普通类里面调用service
网上搜资料 查到一种可行的方法,如下:
http://blog.csdn.net/u011385445/article/details/49305519
总结出来就是要先建立一个工具类SpringUtil,这个工具类实现了接口ApplicationContextAware ,然后在代码里写上application的get set方法,方便我们去获取我们想要的bean。 具体的代码 请参考上面博客内容。
2.使用上面的方法是出现的问题
在使用过程中一直在报application为null的错误 经过反复考虑 测试 。发现原因,是因为我的项目入口类实现了 InitializingBean接口,然后将调用线程类的语句写在了afterPropertiesSet()方法里面。而InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是继承该接口的类,在初始化bean的时候会执行该方法。所以意味着在application还没有初始化的时候,已经被调用了 所以导致一直报空指针异常。
那对于这样的问题该怎么解决呢?
3.解决执行顺序的问题
在项目入口里面,在afterPropertiesSet()方法前面注入service,然后将此service作为参数,传到线程类里面,再次执行程序的时候发现一切都正常了!
4.直觉告诉我还有更好的方法 可以解决这个问题 ,留着以后慢慢发现!