如果你使用了listener监听器来加载配置,一般在Struts+Spring+Hibernate的项目中都是使用listener监听器的。如下
Java代码
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
Spring会创建一个WebApplicationContext上下文,称为父上下文(父容器) ,保存在 ServletContext中,key是WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE的值。
可以使用Spring提供的工具类取出上下文对象:WebApplicationContextUtils.getWebApplicationContext(ServletContext);
DispatcherServlet是一个Servlet,可以同时配置多个,每个 DispatcherServlet有一个自己的上下文对象(WebApplicationContext),称为子上下文(子容器),子上下文可以访问父上下文中的内容,但父上下文不能访问子上下文中的内容。 它也保存在 ServletContext中,key是"org.springframework.web.servlet.FrameworkServlet.CONTEXT"+Servlet名称。
当一个Request对象产生时,会把这个子上下文对象(WebApplicationContext)保存在Request对象中,key是DispatcherServlet.class.getName() + ".CONTEXT"。
可以使用工具类取出上下文对象:RequestContextUtils.getWebApplicationContext(request);
说明 :Spring 并没有限制我们,必须使用父子上下文。我们可以自己决定如何使用。
方案一,传统型:
父上下文容器中保存数据源、服务层、DAO层、事务的Bean。
子上下文容器中保存Mvc相关的Action的Bean.
事务控制在服务层。
由于父上下文容器不能访问子上下文容器中内容,事务的Bean在父上下文容器中,无法访问子上下文容器中内容,就无法对子上下文容器中Action进行AOP(事务)。
当然,做为“传统型”方案,也没有必要这要做。
方案二,激进型:
Java世界的“面向接口编程”的思想是正确的,但在增删改查为主业务的系统里,Dao层接口,Dao层实现类,Service层接口,Service层实现类,Action父类,Action。再加上众多的O(vo\po\bo)和jsp页面。写一个小功能 7、8个类就写出来了。 开发者说我就是想接点私活儿,和PHP,ASP抢抢饭碗,但我又是Java程序员。最好的结果是大项目能做好,小项目能做快。所以“激进型”方案就出现了-----没有接口、没有Service层、还可以没有众多的O(vo\po\bo)。那没有Service层事务控制在哪一层?只好上升的Action层。
本文不想说这是不是正确的思想,我想说的是Spring不会限制你这样做。
由于有了父子上下文,你将无法实现这一目标。解决方案是只使用子上下文容器,不要父上下文容器 。所以数据源、服务层、DAO层、事务的Bean、Action的Bean都放在子上下文容器中。就可以实现了,事务(注解事务)就正常工作了。这样才够激进。
总结:不使用listener监听器来加载spring的配置文件,只使用DispatcherServlet来加载spring的配置,不要父子上下文,只使用一个DispatcherServlet,事情就简单了,什么麻烦事儿也没有了。
Java--大项目能做好--按传统方式做,规规矩矩的做,好扩展,好维护。
Java--小项目能做快--按激进方式做,一周时间就可以出一个版本,先上线接受市场(用户)的反馈,再改进,再反馈,时间就是生命(成本)。
# spring
# mvc
# webapplicationcontext
# Spring中BeanFactory和ApplicationContext的作用和区别(推荐)
# Spring IoC学习之ApplicationContext中refresh过程详解
# SpringBoot获取ApplicationContext的3种方式
# Spring主配置文件(applicationContext.xml) 导入约束详解
# Spring通过ApplicationContext主动获取bean的方法讲解
# spring中通过ApplicationContext getBean获取注入对象的方法实例
# 详解Spring Boot的GenericApplicationContext使用教程
# Spring获取ApplicationContext对象工具类的实现方法
# JSP Spring ApplicationContext的国际化支持
# 详解spring applicationContext.xml 配置文件
# 详解Spring ApplicationContext加载过程
# 加载
# 可以使用
# 想说
# 能做
# 就可以
# 自己的
# 的是
# 都是
# 是一个
# 这是
# 如果你
# 放在
# 还可以
# 最好的
# 又是
# 多个
# 也没
# 但在
# 但我
# 我们可以
相关文章:
建站ABC备案流程中有哪些关键注意事项?
如何挑选优质建站一级代理提升网站排名?
建站VPS能否同时实现高效与安全翻墙?
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
如何选择高效稳定的ISP建站解决方案?
建站之星代理平台如何选择最佳方案?
如何在香港免费服务器上快速搭建网站?
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
七夕网站制作视频,七夕大促活动怎么报名?
如何通过商城自助建站源码实现零基础高效建站?
如何选择高效响应式自助建站源码系统?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
建站之星展会模版如何一键下载生成?
深圳网站制作案例,网页的相关名词有哪些?
如何高效配置IIS服务器搭建网站?
制作网站的基本流程,设计网站的软件是什么?
宝塔新建站点报错如何解决?
c# 服务器GC和工作站GC的区别和设置
湖州网站制作公司有哪些,浙江中蓝新能源公司官网?
如何在Golang中处理模块冲突_解决依赖版本不兼容问题
建站主机默认首页配置指南:核心功能与访问路径优化
实例解析Array和String方法
宝华建站服务条款解析:五站合一功能与SEO优化设置指南
如何在万网主机上快速搭建网站?
如何获取免费开源的自助建站系统源码?
济南网站制作的价格,历城一职专官方网站?
油猴 教程,油猴搜脚本为什么会网页无法显示?
在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?
专业商城网站制作公司有哪些,pi商城官网是哪个?
建站之星云端配置指南:模板选择与SEO优化一键生成
如何自定义建站之星模板颜色并下载新样式?
Python如何创建带属性的XML节点
如何通过VPS建站实现广告与增值服务盈利?
香港网站服务器数量如何影响SEO优化效果?
建站之星如何修改网站生成路径?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
如何在阿里云购买域名并搭建网站?
网站制作壁纸教程视频,电脑壁纸网站?
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
高端建站如何打造兼具美学与转化的品牌官网?
免费视频制作网站,更新又快又好的免费电影网站?
定制建站价位费用解析与套餐推荐全攻略
建站主机选哪种环境更利于SEO优化?
公司网站制作价格怎么算,公司办个官网需要多少钱?
已有域名和空间如何快速搭建网站?
网站制作企业,网站的banner和导航栏是指什么?
公司网站的制作公司,企业网站制作基本流程有哪些?
如何用IIS7快速搭建并优化网站站点?
*请认真填写需求信息,我们会在24小时内与您取得联系。