问题说明 :
今天在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相关推荐

  1. 【spring】在servlet中注入spring的bean,servlet容器和spring容器

    一.Servlet容器 Servlet的整个生命周期好象都是由Servlet容器来处理的. 如果把它硬放到Spring容器中去创建,Servlet对象是可被Spring容器建出来,但Servlet容器 ...

  2. 如何在线程中获取spring 管理的bean

    问题说明 今天在web应用中用到了Java多线程的技术来并发处理一些业务,但在执行时一直会报NullPointerException的错误,问题定位了一下发现是线程中的Spring bean没有被注入 ...

  3. java多线程中注入Spring对象问题

    web应用中java多线程并发处理业务时,容易抛出NullPointerException. 原因: 线程中的Spring Bean没有被注入.web容器在启动时,没有提前将线程中的bean注入,在线 ...

  4. Java子线程中的异常处理(通用)

    Java子线程中的异常处理(通用) 参考文章: (1)Java子线程中的异常处理(通用) (2)https://www.cnblogs.com/toplist/p/7594557.html 备忘一下.

  5. spring 托管bean_在非托管对象中使用Spring托管Bean

    spring 托管bean 即使我们想使用现有的最佳和最新技术,我们也必须处理遗留代码. 想象一下,新代码是用Spring框架的最新技术编写的,而旧代码根本不是用Spring编写的. 然后,在非托管S ...

  6. 在非托管对象中使用Spring托管Bean

    即使我们想使用现有的最佳和最新技术,我们也必须处理遗留代码. 想象一下,新代码是用Spring框架的最新技术编写的,而旧代码根本不是用Spring编写的. 然后在非托管Spring对象中使用Sprin ...

  7. springboot 在线程中注入bean,解决注入bean为null的问题

    解决问题: 在我们开发过程中总会遇到比如在线程中需要代用service或者mapper等读取数据库,或者某些自动注入bean失效的情况 问题分析: 在线程中因为线程是安全的,所以是无法自动注入bean ...

  8. springboot线程中获取spring beans

    线程中无法直接使用注解的方式获取spring beans,但是线程经常需要用到bean来实现业务流程;这里有两种方式 方法1:是通过初始化线程实现类的方式通过set私有属性,把bean赋值到线程实现类 ...

  9. 在不受Spring管理的类中注入spring 管理的对象

    前几天在做一个任务时,需要在一个普通的java类(不受Spring管理的类)中,调用 spring data jpa的某个xxxReponsitory 接口,同时需要读取properties 文件中的 ...

最新文章

  1. 关于java.nio.Buffer的API
  2. WatchOS系统开发大全(5)-WKInterfaceController的生命周期
  3. 一文读懂 HTTP/2 特性
  4. Swift--基本运算符
  5. oracle 修索引改空间_Oracle如何更改表空间的数据文件位置详解
  6. 并查集(UnionFindSet)
  7. 关于linux-Centos 7下mysql 5.7.9的rpm包的安装方式
  8. 网线制作ppt_快速制作PPT技巧!
  9. 训练日志 2018.12.2
  10. 给iOS库添加Cocoapods支持
  11. slice,substr,substring三者的区别
  12. 如果有一个工具可以帮助你将你的代码可视化,你需要吗?
  13. 线性代数学习心得(二)矩阵的逆和矩阵变换
  14. scope hosting_针对Web开发人员的Cloud Hosting和CDN服务–最佳
  15. 用python在大麦网抢票_大麦网抢票python+selenium实现
  16. 价格操控:大数据“杀熟”和算法合谋
  17. java fillrect_Java的graphics2D fillRect不能正常工作与半透明的颜色
  18. DAY1(02-HTML标签(上))
  19. 已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭。
  20. Flask上下文管理源码--亲自解析一下

热门文章

  1. java操作oracle数据_Java jdbc操作oracle数据库的两种方式
  2. 7-7 12-24小时制 (15 分)
  3. 在cmd中配置安装mysql数据库密码_windows安装mysql数据库并修改密码
  4. c语言递归算法实验报告,递归算法实验报告.docx
  5. java list resultset_Java工具类 通过ResultSet对象返回对应的实体List集合
  6. Linux+QT界面开发(含数据库)小结
  7. xpath的基本使用
  8. Tornado 错误 Global name 'memoryview' is not defined
  9. 阿里云更新ESC镜像
  10. 弹出层中都可以用的复制功能