全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Spring MVC之WebApplicationContext_动力节点Java学院整理

如果你使用了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小时内与您取得联系。