全网整合营销服务商

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

免费咨询热线: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加载过程  # 加载  # 可以使用  # 想说  # 能做  # 就可以  # 自己的  # 的是  # 都是  # 是一个  # 这是  # 如果你  # 放在  # 还可以  # 最好的  # 又是  # 多个  # 也没  # 但在  # 但我  # 我们可以 


相关文章: 建站之星与建站宝盒如何选择最佳方案?  公司网站制作价格怎么算,公司办个官网需要多少钱?  音乐网站服务器如何优化API响应速度?  ,怎么在广州志愿者网站注册?  制作网页的网站有哪些,电脑上怎么做网页?  如何挑选最适合建站的高性能VPS主机?  建站之星logo尺寸如何设置最合适?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  清除minerd进程的简单方法  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  南宁网站建设制作定制,南宁网站建设可以定制吗?  如何在橙子建站中快速调整背景颜色?  如何通过主机屋免费建站教程十分钟搭建网站?  如何安全更换建站之星模板并保留数据?  高性能网站服务器部署指南:稳定运行与安全配置优化方案  如何通过VPS建站无需域名直接访问?  广德云建站网站建设方案与建站流程优化指南  图册素材网站设计制作软件,图册的导出方式有几种?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  定制建站流程步骤详解:一站式方案设计与开发指南  电商平台网站制作流程,电商网站如何制作?  如何彻底卸载建站之星软件?  如何正确下载安装西数主机建站助手?  正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?  如何通过服务器快速搭建网站?完整步骤解析  香港网站服务器数量如何影响SEO优化效果?  C#如何在一个XML文件中查找并替换文本内容  宿州网站制作公司兴策,安徽省低保查询网站?  建站之星各版本价格是多少?  如何在万网ECS上快速搭建专属网站?  如何设计高效校园网站?  浅谈Javascript中的Label语句  专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?  建站之星3.0如何解决常见操作问题?  微信小程序 五星评分(包括半颗星评分)实例代码  制作网站的模板软件,网站怎么建设?  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  建站主机类型有哪些?如何正确选型  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  如何通过FTP空间快速搭建安全高效网站?  如何通过老薛主机一键快速建站?  家庭建站与云服务器建站,如何选择更优?  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  如何配置WinSCP新建站点的密钥验证步骤?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  如何选择PHP开源工具快速搭建网站?  外贸公司网站制作,外贸网站建设一般有哪些步骤?  如何实现建站之星域名转发设置? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。