关于Spring中多线程下注入失败的处理

问题背景:在进行CSNPortal编写时遇到这样一个需求,需要在web启动的同时,启动一个线程进行网络的监听,每隔一段时间向服务器发送一个获取模块信息的请求。

相关阅读

Spring中如何配置Hibernate事务

Struts2整合Spring方法及原理

基于 Spring 设计并实现 RESTful Web Services

Spring-3.2.4 + Quartz-2.2.0集成实例

使用 Spring 进行单元测试

运用Spring注解实现Netty服务器端UDP应用程序

Spring 3.x 企业应用开发实战 PDF完整高清扫描版+源代码

解决办法:在web.xml中注册一个监听事件,写一个监听类,进行网络的交互,获取数据后进行相应的处理,然后进行数据库操作。

遇到问题: 每次进行操作时都会报NullPointerException,检查一看,是我已经注入的对象为空。仔细想了想,也查阅了一些资料,发现Spring的容器并不能在不同的线程中使用,因为出于线程安全的考虑(因为如果两个线程需要同时操作一个实例就比较麻烦),而进行线程安全的处理是相对复杂的,所以Spring并没有做这方面的处理。

解决办法:将需要在两个线程都用到的实例进行全局化,也就是加static,这样就将实例提升到了进程的级别,两个线程都可以使用。

Spring 的详细介绍请点这里
Spring 的下载地址请点这里

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/d269208439d2b8b24ad9d84ab9cfd813.html