首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

Spring中多线程注入SqlService注不进去,显示sqlService为null错误

2012-04-26 
Spring中多线程注入SqlService注不进去,显示sqlService为null异常Java codepublic class AutoRun implemen

Spring中多线程注入SqlService注不进去,显示sqlService为null异常

Java code
public class AutoRun implements Runnable {        @Resource    private SqlService sqlService;    public void setSqlService(SqlService sqlService) {        this.sqlService = sqlService;    }    public void run() {        while (true) {            try {                                String a = new Date().toLocaleString();                            sqlService.read("select '"+a+"' from dual");                                System.out.println(a);                Thread.sleep(100);// 休眠2分钟            } catch (InterruptedException e) {                e.printStackTrace();            } catch (Exception e) {                e.printStackTrace();            }        }    }}


Spring中多线程注入SqlService注不进去,显示sqlService为null异常,而在普通Action中可以注入,请问这是为什么?

[解决办法]
往线程类中注入....
会不会是你注入之前,该线程类的实例就已经生成了呢?或者说是该线程类实例生成时,sql service实例还没有生成?
sql service实例化---AutoRun 实例化----注入----访问AutoRun.sqlService,这个过程你再琢磨一下,看看你是否按照这个顺序?
[解决办法]
public void setSqlService(SqlService sqlService) {
this.sqlService = sqlService;
}
 是不是要放在run的里面呀
[解决办法]
用这个:

探讨
引用:
23楼:
lz不会是先让线程转起来,再set的吧?

不是这样的

25楼:
肯定是线程启动时,没有使用到spring的容器,,,因为线程没有通过spring容器,所以也就找不到service,故为NUll

这个问题么样处理


Java code

//得到容器
ApplicationContext con……

[解决办法]
探讨

启动:
Java code
AutoRun workSyp = new AutoRun();
Thread work = new Thread(workSyp);
work.start();

热点排行