在多线程中注入spring对象
来源:互联网 发布:万网单域名控制台登录 编辑:程序博客网 时间:2024/06/14 05:22
今天遇到一个问题,在kafka的消费端,我是启的多线程去消费kafka的数据,其中在多线程的业务代码中注入了server层的对象,但是在实际执行的时候却发现注入不了,然后检查spring的xml 包扫描的配置,发现配置没有问题,后面才发现在多线程的线程内部不能注入spring容器所管理的对象,细想一下: 应该是因为在web容器启动的时候,spring并不能感知还未执行的线程中的对象注入.
然后换了一种思路,就是在开启线程之前在main线程中先注入server层的对象,然后在执行线程的时候把该对象作为参数传入到线程内部执行,前提是这个对象必须是无状态的或者说是线程安全的.
主线程的伪代码如下:
@Servicepublic class MainClassEG {@Autowiredprivate ServiceEG service; public void methodEG { //执行消费 for (int i = 0; i < 3; i++) { //在这里开启线程的时候传入spring注入的service //如果把@Autowired注解的private ServiceEG service;写在XxxThread线程类里面,spring是不能注入的 executor.execute(new XxxThread(service,i); } }}
XxxThread 线程的伪代码如下:
public class XxxThread implements Runnable { private ServiceEg service; private int threadFlag; public XxxThread(ServiceEg service, int threadFlag) { super(); this.service = service; this.threadFlag = threadFlag; } public ServiceEg getService() { return service; } public void setService(ServiceEg service) { this.service = service; } public int getThreadFlag() { return threadFlag; } public void setThreadFlag(int threadFlag) { this.threadFlag = threadFlag; } @Override public void run() { service.doSomething(xxxx); }}
阅读全文
2 0
- 在多线程中注入spring对象
- 在多线程类中,Spring注入对象为null问题处理
- spring在构造函数中注入对象
- 多线程中引入Spring自动注入的对象为null
- Spring 在多线程中,bean的注入问题
- JBPM3中在AssignmentHandler中注入spring管理对象
- 在ServletContextListener实现类中获取spring注入对象
- 在ServletContextListener实现类中获取spring注入对象
- spring 在普通类中调用注入的对象
- 在ServletContextListener实现类中获取spring注入对象
- 在Spring中注入配置文件
- quartz的job中注入spring对象!
- 过滤器中注入spring管理的对象
- 在Servlet中可访问Spring bean对象,但是不能直接以注入的方式引用
- new出来的service对象和你在spring中注入的service对象不是同一个对象
- Spring多线程注入问题
- 在监听器中注入spring bean
- 在非Spring容器中使用注入
- 迷失的几个月
- Java开发IDE工具Eclipse使用笔记
- 破解vs2008
- framework学习之路
- 关于H5端大图上传的问题
- 在多线程中注入spring对象
- 链表面试题(二):冒泡排序、合并两个有序链表、查找中间节点、查找倒数K个节点
- 数据库基础知识小结
- Java语言基础复习与巩固
- LeetCode 491. Increasing Subsequences
- Boost.Asio 笔记
- google ctf 2017 inst_prof writeup
- GITLAB hooks
- 常用系统监控命令