spring 在Thread中注入@Resource失败,总为null的解决方案
来源:互联网 发布:淘宝直播在那里看 编辑:程序博客网 时间:2024/05/16 13:52
背景:
就是我用@service或者@resposity声明了一个bean,给sping管理。现在我有个需求,就是用到Thread,但是这个线程需要用我的service或者dao,然后我习惯性的在继承了Thread类或者实现了Runnable的类里写了如下:
@Resource
private MyService myService;
但是运行的时候,进入到这个线程,这个myServcie总为null,也就是注入失败。
1.查了一下,有这样的问题,原因就是spring和多线程安全的问题,不让注入,网上的解决方案说,声明时弄成static的。如下:http://blog.csdn.net/bjamosgavin/article/details/6125497
不过我这样行不通。private static CustomerchangeService customerchangeService;
public CustomerchangeService getCustomerchangeService() { return customerchangeService; }
public void setCustomerchangeService( CustomerchangeService customerchangeService) { CustomerchangeThread.customerchangeService = customerchangeService; }
2.第二种(可以)
就是我在启动这个线程的时候,在这个线程的构造函数中把我的service实例传过去,然后再启动。
new MyThread(myService).start()
3。第三种(可以)
就是让我的service或者dao的实现类实现Runnable这个接口,然后把你的线程的逻辑写在run方法里,启动的时候,直接this.start()就行。注意除了要在service的实现类中实现Runnable接口外,还应该在service接口中继承Runnable接口。
对于我的情况,我是直接在dao里实现了Runnable,然后用的线程池启动的,如下:pool.execute(this);
4.还有就是直接new一个实例。
不知道还有什么解决的好办法。
0 0
- spring 在Thread中注入@Resource失败,总为null的解决方案
- spring 在Thread中注入@Resource失败,总为null~解决
- spring 在Thread中注入@Resource@Autowired失败,总为null~解决
- Spring在多线程下@Resource注入为null
- spring注入失败,报thread,null
- JAVA解决在@autowired,@Resource注入为null的问题
- 关于Spring中为静态static的@Resource自动注入失败的问题
- Spring @Autowired注解在非Controller中注入为null
- Spring 父类注入的属性 在子类中调用为null
- @Resource自动注入为null
- 多线程中引入Spring自动注入的对象为null
- Spring依赖注入的接口为null
- 在ssh项目中spring在action注入service为null
- 在Action中使用@Resource注解注入失败
- Spring的JdbcTemplate从数据库中获取对象属性总为null
- 在多线程类中,Spring注入对象为null问题处理
- Spring bean注入为null
- Thread子类中,不能使用Spring注解,变量为null
- scn
- JS:(JavaScript)
- workerman高性能socket服务器框架搭建
- wpf 与winform 之间拖拽数据
- JSP之JSTl标签
- spring 在Thread中注入@Resource失败,总为null的解决方案
- [HihoCoder]#1342 : Full Binary Tree Picture
- servlet的三种创建模式
- 十大必备面试问题 你知道多少???
- gethostbyname()函数详解
- jquery父子隶属关系
- 开灯问题
- 中介者模式-C++实现
- Cocos2d-x3.0模版容器详解:cocos2d::Vector<T>