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.直觉告诉我还有更好的方法  可以解决这个问题 ,留着以后慢慢发现!

上一篇下一篇

猜你喜欢

热点阅读