解决多线程无法@Autowired注入,手动获取Bean对象
问题
当我们使用多线程时,又想注入一个service给我们使用,但是我们发现service总是为null。
代码示例:
1 | //例1 |
原因
new Thread不在spring容器中,也就无法获得spring中的bean对象。
解决方案
1.最简单的方法 把要注入的service通过构造方法传过去
1 | public class TaskComments implements Callable<List<String>> { |
2.通过ApplicationContext手动获取Bean(Springboot版本,其他自行百度)
- 1.配置Config
1 | package cn.pconline.config; |
- 2.使用
1 | package cn.pconline.modules.toutiao.task; |