在项目中遇到了一个问题,如题,如图。在运行的时候,使用@Autowired注入的服务均为null,也就是无法注入。
查找资料之后总结,个人觉得有两方面原因,也可以说两方面的解决手段
- new出来的线程,不在springboot的容器中,没办法自动注入(具体原理还不是特别懂,需要深入研究,也希望有大佬解答一下),需要手动注入
- 修改线程的编写方式,以Springboot的方式来新建一个线程。
先来讲第一种
参考:https://blog.csdn.net/u011493599/article/details/78522315
需要新建一个类实现ApplicationContextAware接口,接口中重写setApplicationContext方法。然后在线程的构造方法中手动注入被@service标记的类。
实现ApplicationContextAware接口的类(类名随意):
@Component
public class SpringBeanUtil implements ApplicationContextAware{
private static ApplicationContext applicationContext = null;