Spring 在多线程中,bean的注入问题
2017-06-19 17:02
246 查看
转自:http://www.cnblogs.com/bencakes/p/6139542.html
最近碰到了一个问题,使用SSM框架,在Service层需要另开一个线程,这个线程专门用来做一些操作,并将结果写入数据库中。但是在线程中使用@Resource或者@Autowired注入全部为NULL,
原来是Spring不能在线程中注入。
网上的主要解决方法有:
将需要的Bean作为线程的的构造函数的参数传入
使用ApplicationContext.getBean方法来静态的获取Bean
我的线程中所需要的Bean的数量较多,并且以后还有可能增加或者减少,所以方法1并不适合
我的Spring配置文件并不只一个,而且使用getBean方法需要重新加载一遍所有的Bean,这样也违反的Spring的IoC,并不是我想要的,所以也不采用方法2
最后确定使用内部类的方法,将线程中需要的Bean提前注入好,大致的结构如下:
@Service
class TestExample{
//这两个为线程所需要的Bean
@Resource
TestDao testDao;
@Resource
NeedDap needDao;
public void serviceExecute(){
//在这里开启线程,执行操作
ThreadExample te = new ThreadExample();
te.start();
}
//内部类
private class ThreadExample extends Thread{
public ThreadExample(){
//也可以在构造函数中传入参数
}
public void run(){
//这里为线程的操作
//就可以使用注入之后Bean了
}
}
}
最近碰到了一个问题,使用SSM框架,在Service层需要另开一个线程,这个线程专门用来做一些操作,并将结果写入数据库中。但是在线程中使用@Resource或者@Autowired注入全部为NULL,
原来是Spring不能在线程中注入。
网上的主要解决方法有:
将需要的Bean作为线程的的构造函数的参数传入
使用ApplicationContext.getBean方法来静态的获取Bean
我的线程中所需要的Bean的数量较多,并且以后还有可能增加或者减少,所以方法1并不适合
我的Spring配置文件并不只一个,而且使用getBean方法需要重新加载一遍所有的Bean,这样也违反的Spring的IoC,并不是我想要的,所以也不采用方法2
最后确定使用内部类的方法,将线程中需要的Bean提前注入好,大致的结构如下:
@Service
class TestExample{
//这两个为线程所需要的Bean
@Resource
TestDao testDao;
@Resource
NeedDap needDao;
public void serviceExecute(){
//在这里开启线程,执行操作
ThreadExample te = new ThreadExample();
te.start();
}
//内部类
private class ThreadExample extends Thread{
public ThreadExample(){
//也可以在构造函数中传入参数
}
public void run(){
//这里为线程的操作
//就可以使用注入之后Bean了
}
}
}
相关文章推荐
- Spring 在多线程中,bean的注入问题
- Spring 多线程下注入bean问题
- Spring 在多线程中,bean的注入问题
- Spring 多线程下注入bean问题详解
- Spring 多线程下注入 bean 问题详解
- Spring 多线程下注入bean问题
- struts2与spring集成时,关于Action类中成员bean自动注入的问题
- Spring 4.2 方法注入解决单例Bean的原型Bean依赖问题
- hessian 在spring中的使用 (bean 如 Dao无法注入的问题)
- Spring3 M2 quartz-2.1.7 解决bean不能注入问题
- 由一个RABBITMQ监听器死循环引出的SPRING中BEAN和MAPPER接口的注入问题
- org.springframework.beans.factory.BeanCreationException(spring注入问题)
- Spring单元测试时出现的一个奇怪问题:找不到要注入的bean
- Spring+Quartz 定时任务无法自动注入bean的问题
- 关于SpringBoot404, bean无法注入的问题(与文件包位置有关)改变自动扫描的包
- Spring4.X+Quartz2.X无法自动注入bean问题
- java多线程中注入Spring对象问题
- struts2与spring集成时,关于class属性及成员bean自动注入的问题
- Spring通过单实例化Bean简化多线程问题
- Spring 中注入bean的properties配置文件位置问题解决