问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

spring在多线程中怎么注入bean

发布网友 发布时间:2022-04-21 01:06

我来回答

1个回答

热心网友 时间:2022-06-17 00:19

Java(多)线程中注入Spring的Bean

问题说明
今天在web应用中用到了Java多线程的技术来并发处理一些业务,但在执行时一直会报NullPointerException的错误,问题定位了一下发现是线程中的Spring bean没有被注入,bean对象的值为null。
原因分析
web容器在启动应用时,并没有提前将线程中的bean注入(在线程启动前,web容易也是无法感知的)
解决方案
方法有多种,网上也看到了不少。
1. 使用static声明变量
http://blog.csdn.net/bjamosgavin/article/details/6125497
这个方法自己试了一下但是没有成功。。。
2. 把线程设置为主程序的内部类
这也是一种简单的方法,主程序在web容器加载时肯定是可以注入Spring bean的,那么将线程的实现类放在主程序的类中便可以“共享”Spring的bean,(当然,这需要提前把线程中的需要用到的bean定义在外层的类中)。
具体操作方法,就是将生成线程的线程池定义在主程序的类中,每个线程的实现类作为内部类也定义在主程序中。这个方法自己试过,是可以的。
3. 使用静态方法直接取的容器中的spring对象
这个方法稍微专业点,可以线程的分发与线程的实现分离出来。在每个线程中使用静态方法直接取的容器中的spring对象。
使用静态方法获取容器中的spring对象可以参见
http://littie1987.iteye.com/blog/937877,
或者http://my.oschina.net/skyline520/blog/181158?p={{page}}
但一定要记住,你定义这个工具类也要配置成spring中的bean!
下面贴一下我在使用时的代码
(1)定义工具类
public class SpringApplicationContextHolder implements ApplicationContextAware {
private static ApplicationContext context;
@Override
public void setApplicationContext(ApplicationContext context) throws BeansException {
SpringApplicationContextHolder.context = context;
}

public static Object getSpringBean(String beanName) {
notEmpty(beanName, "bean name is required");
return context==null?null:context.getBean(beanName);
}
public static String[] getBeanDefinitionNames() {
return context.getBeanDefinitionNames();
}
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
瑞幸咖啡单糖半糖区别 我的华为P20pro 屏幕锁忘记密码了 我看到之前发的通过安全模式解锁是... 不锈钢给水管接头配件有哪些 不锈钢水管接头规格型号 不锈钢水管:规格型号全解析 东北师大赵玉龙教授课题组:2-异氰基苯甲醛的合成应用 对三氟甲氧基苯胺理化性质 儿童拼音学习小孩子学习拼音有什么好方法 如何拼音启蒙?怎样让孩子无痛学会拼音?掌握1个关键3个步骤 我家儿子快上小学了,想教他拼音,你们有好方法吗? 宝宝满月杯子刻字刻什么好宝宝满月杯子刻字刻哪些好呢 如何调用spring配置文件手动注入的bean spring的bean注入属性有哪几种方式 spring 普通类 怎么注入bean spring注入bean的几种方式 word表格文字上下居中怎么弄 word中的表格文字怎么上下居中 word表格里文字如何上下居中 word表格上下居中怎么弄 word表格文字上下居中怎么设置 如何使word表格中的文字上下居中 word表格怎样让文字上下居中 如何让word表格中的文字上下居中 word表格里的字怎么上下居中 word里的表格怎么调整文字上下居中 在word表格中怎么让文字上下居中 怎么把word表格中的文字上下居中 word表格怎么让字体上下居中 word表格怎么调整文字上下居中 如何成为一个很厉害的人 读书笔记 如何成为一个很厉害的人读后感 spring 如何用注解的方式给普通类注入bean spring 用哪种方式注入bean好 spring中哪些类需要作为bean来进行注入管理 急急急:Java普通工具类获取Spring中注入bean时偶尔发生异常 采用spring注解后如何注入bean问题 如何查看 spring注入的bean 如何用spring获取bean 如何取得Spring管理的bean spring 中怎么取得bean 如何通过spring的配置文件得到bean对象 spring配置bean实例化有哪些方式 关于Spring注入,静态工具类怎么注入属性 谁知道Spring获取Bean的几种方式 红外测距仪有什么特点? 测距仪主要是通过什么实现的? 苹果手机里的号码怎么导入安卓手机 怎么从苹果手机导出电话号码到安卓手机 怎么将苹果手机里的电话号码导入安卓手机 苹果手机如何导入电话号码 苹果手机电话号码怎么弄到安装手机上
  • 焦点

最新推荐

猜你喜欢

热门推荐