项目中使用new ClassPathXmlApplicationContext()获得spring上下文对象的问题
发布日期:2021-07-20 20:53:45
浏览次数:63
分类:技术文章
本文共 1498 字,大约阅读时间需要 4 分钟。
问题背景:在我们的web程序中,用spring来管理各个实例(bean), 有时在程序中为了使用已被实例化的bean, 通常会用到这样的代码:
ApplicationContext appContext = new ClassPathXmlApplicationContext("classpath:META-INF/spring/applicationContext-common.xml"); ApplicationContext appContext=appContextUtil.getContext(); ProjectServiceFacade projectServiceFacade=(ProjectServiceFacade)appContext.getBean("biz.projectServiceFacade");
上述的代码会带来一个问题:因为它会重新装载applicationContext-common.xml并实例化上下文bean, 如果有些线程配置类也是在这个配置文件中,那么会造成做相同工作的的线程会被启两次。一次是web容器初始化时启动,另一次是上述代码显示的实例化了一次。这在业务上是要避免的。
解决方法:不用类似new ClassPathXmlApplicationContext()的方式,从已有的spring上下文取得已实例化的bean。
具体步骤:1)增加一个ApplicationContextUtil类,用来取得上下文ApplicationContext
public class ApplicationContextUtil implements ApplicationContextAware { private ApplicationContext context;//声明一个静态变量保存 @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.context=applicationContext; } public ApplicationContext getContext(){ return context; }}2) 对ApplicationContextUtil类增加 Spring配置,让Spring完成此工具类的装载并且完成applicationcontext上下文的注入;applicationContext-common.xml配置如下:
//初始化appliationUtil类,并完成ApplicationContext的注入//对业务类注入ApplicationContextUtil实例
3)业务类调用代码如下:
ApplicationContext appContext=appContextUtil.getContext(); ProjectServiceFacade projectServiceFacade=(ProjectServiceFacade)appContext.getBean("biz.projectServiceFacade"); WorkSignService workSignService=(WorkSignService)appContext.getBean("biz.workSignService");
转载地址:https://blog.csdn.net/liao0801_123/article/details/86496770 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2024年03月26日 23时19分26秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
红旗linux备份,更换红旗Linux: Asianux的yum源为网易源
2019-04-21
中兴力维动环监控接线图_肖东晖:动环是基本点 视频监控是增长点
2019-04-21
js 月份加6个月_个税新变化!收入不超6万元月份暂不预扣个税,需满足3个条件...
2019-04-21
css3 animation 位置移动了怎么不占位置_CSS3 动画
2019-04-21
maven 修改文件名_[070]maven
2019-04-21
dcom组件有excel没有word_技术共享 | Java后台导出word实现思路
2019-04-21
word中套用表格样式在哪里_Word 中的表格如何排序?
2019-04-21
螺旋进刀非法平面选择_进刀方法、刀片类型、术语...螺纹加工重点知识你都知道吗?...
2019-04-21
lisp方格网法计算土方量_分享:方格网土方工程量计算实例例题(某工厂厂区)...
2019-04-21
getset原子性 redis_科普:Redis 分布式锁进化史(解读 + 缺陷分析)
2019-04-21
海门开发区机器人项目_关注!2019年省重大项目排定,海门这4个项目凭实力入选...
2019-04-21
拟真机器人拯救者怎么来_R7000P来了,开学季拯救者游戏本该咋选?(附产品对比)...
2019-04-21
maxdea如何计算指数_【股票多因子系列】BARRA风格因子的计算方式
2019-04-21
华为业务板块_手机业务受挫,华为把目光投向了哪些新市场
2019-04-21
除中文外的正则_java正则表达式入坑指南
2019-04-21
获取表数据_DBus数据库表结构变更处理方案
2019-04-21