spring 在Thread中注入@Resource失败,总为null~解决
来源:互联网 发布:圣和圣静安公馆 知乎 编辑:程序博客网 时间:2024/05/29 19:04
背景:
就是我用@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@Autowired失败,总为null~解决
- spring 在Thread中注入@Resource失败,总为null的解决方案
- JAVA解决在@autowired,@Resource注入为null的问题
- Spring在多线程下@Resource注入为null
- spring注入失败,报thread,null
- Spring @Autowired注解在非Controller中注入为null
- @Resource自动注入为null
- 关于Spring中为静态static的@Resource自动注入失败的问题
- 关于spring依赖注入到普通类中为null的情况解决理解方案
- 在ssh项目中spring在action注入service为null
- 在Action中使用@Resource注解注入失败
- Spring 父类注入的属性 在子类中调用为null
- 在多线程类中,Spring注入对象为null问题处理
- Spring在Thread中注入Bean无效的解决方式[嗡汤圆的小笔记]
- Spring bean注入为null
- Thread子类中,不能使用Spring注解,变量为null
- 多线程中引入Spring自动注入的对象为null
- Volley的使用(二)
- iOS App国际化
- js 实现实时时钟
- linux用户管理命令
- Parsing Data for android-N failed Unsupported major.minor version 51.0
- spring 在Thread中注入@Resource失败,总为null~解决
- JAVA设计模式之单例模式
- 关于dropdowndatawindow的几个说明
- SciTE 编辑器汉化
- GDT和LDT的关系
- iphone 5 5s 6 6s 6plus开发
- 程序员的自我修养 - 操作系统
- 夯实基础——static关键字
- iOS中使用iCloud一些需要注意的地方(Xcode7.2)