Java(多)线程中注入Spring的Bean
问题说明 :
今天在web应用中用到了Java多线程的技术来并发处理一些业务,但在执行时一直会报NullPointerException的错误,问题定位了一下发现是线程中的Spring bean没有被注入,bean对象的值为null。
原因分析 :
web容器在启动应用时,并没有提前将线程中的bean注入(在线程启动前,web容易也是无法感知的)
解决方案 :
线程中获取bean
import org.springframework.context.ApplicationContext;public class ServiceFactory {public static ApplicationContext context=null;public static Object getInstance(String serviceName){if (null==context) {context=ApplicationContextLoaderListener.getApplicationContext();}return context.getBean(serviceName);}
}
@Overridepublic void run() {// 记录推荐记录GfRegistrationService gfRegistrationService =(GfRegistrationService) ServiceFactory.getInstance("gfRegistrationService");List<GfRegistration> insertRegistrationlist = this.getGfRegistrationlist();if (insertRegistrationlist.size() > 0) {int[] resultArry = gfRegistrationService.batchInsert(insertRegistrationlist);if (resultArry.length > 0) {logger.info("信息批量记录", "批量记录信息,length= " + resultArry.length);} else {logger.info("信息批量记录", "推荐商户信息为空");}}}
Java(多)线程中注入Spring的Bean相关推荐
- 【spring】在servlet中注入spring的bean,servlet容器和spring容器
一.Servlet容器 Servlet的整个生命周期好象都是由Servlet容器来处理的. 如果把它硬放到Spring容器中去创建,Servlet对象是可被Spring容器建出来,但Servlet容器 ...
- 如何在线程中获取spring 管理的bean
问题说明 今天在web应用中用到了Java多线程的技术来并发处理一些业务,但在执行时一直会报NullPointerException的错误,问题定位了一下发现是线程中的Spring bean没有被注入 ...
- java多线程中注入Spring对象问题
web应用中java多线程并发处理业务时,容易抛出NullPointerException. 原因: 线程中的Spring Bean没有被注入.web容器在启动时,没有提前将线程中的bean注入,在线 ...
- Java子线程中的异常处理(通用)
Java子线程中的异常处理(通用) 参考文章: (1)Java子线程中的异常处理(通用) (2)https://www.cnblogs.com/toplist/p/7594557.html 备忘一下.
- spring 托管bean_在非托管对象中使用Spring托管Bean
spring 托管bean 即使我们想使用现有的最佳和最新技术,我们也必须处理遗留代码. 想象一下,新代码是用Spring框架的最新技术编写的,而旧代码根本不是用Spring编写的. 然后,在非托管S ...
- 在非托管对象中使用Spring托管Bean
即使我们想使用现有的最佳和最新技术,我们也必须处理遗留代码. 想象一下,新代码是用Spring框架的最新技术编写的,而旧代码根本不是用Spring编写的. 然后在非托管Spring对象中使用Sprin ...
- springboot 在线程中注入bean,解决注入bean为null的问题
解决问题: 在我们开发过程中总会遇到比如在线程中需要代用service或者mapper等读取数据库,或者某些自动注入bean失效的情况 问题分析: 在线程中因为线程是安全的,所以是无法自动注入bean ...
- springboot线程中获取spring beans
线程中无法直接使用注解的方式获取spring beans,但是线程经常需要用到bean来实现业务流程;这里有两种方式 方法1:是通过初始化线程实现类的方式通过set私有属性,把bean赋值到线程实现类 ...
- 在不受Spring管理的类中注入spring 管理的对象
前几天在做一个任务时,需要在一个普通的java类(不受Spring管理的类)中,调用 spring data jpa的某个xxxReponsitory 接口,同时需要读取properties 文件中的 ...
最新文章
- 关于java.nio.Buffer的API
- WatchOS系统开发大全(5)-WKInterfaceController的生命周期
- 一文读懂 HTTP/2 特性
- Swift--基本运算符
- oracle 修索引改空间_Oracle如何更改表空间的数据文件位置详解
- 并查集(UnionFindSet)
- 关于linux-Centos 7下mysql 5.7.9的rpm包的安装方式
- 网线制作ppt_快速制作PPT技巧!
- 训练日志 2018.12.2
- 给iOS库添加Cocoapods支持
- slice,substr,substring三者的区别
- 如果有一个工具可以帮助你将你的代码可视化,你需要吗?
- 线性代数学习心得(二)矩阵的逆和矩阵变换
- scope hosting_针对Web开发人员的Cloud Hosting和CDN服务–最佳
- 用python在大麦网抢票_大麦网抢票python+selenium实现
- 价格操控:大数据“杀熟”和算法合谋
- java fillrect_Java的graphics2D fillRect不能正常工作与半透明的颜色
- DAY1(02-HTML标签(上))
- 已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭。
- Flask上下文管理源码--亲自解析一下
热门文章
- java操作oracle数据_Java jdbc操作oracle数据库的两种方式
- 7-7 12-24小时制 (15 分)
- 在cmd中配置安装mysql数据库密码_windows安装mysql数据库并修改密码
- c语言递归算法实验报告,递归算法实验报告.docx
- java list resultset_Java工具类 通过ResultSet对象返回对应的实体List集合
- Linux+QT界面开发(含数据库)小结
- xpath的基本使用
- Tornado 错误 Global name 'memoryview' is not defined
- 阿里云更新ESC镜像
- 弹出层中都可以用的复制功能