SpringMVC 上下文webApplicationContext
发布日期:2021-11-30 16:49:49
浏览次数:2
分类:技术文章
本文共 1593 字,大约阅读时间需要 5 分钟。
使用了listener监听器来加载配置,一般在Struts+Spring+Hibernate的项目中都是使用listener监听器的。如下
org.springframework.web.context.ContextLoaderListener
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,事情就简单了,什么麻烦事儿也没有了。转载地址:https://leeguoren.blog.csdn.net/article/details/51638913 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月04日 08时23分27秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【英语学习】【化学】几个与氮(Nitrogen)有关的化学词汇 (1)
2019-04-28
【英语学习】 - 君若不离不弃,吾当生死相依
2019-04-28
【英语学习】星期的词源
2019-04-28
【人生杂谈】 - 金钱/名利 & 贫穷/富贵 && 健身房定律
2019-04-28
【人生杂谈】宇宙/暗物质/擎天柱
2019-04-28
【人生杂谈】生命DNA/理性思维/天才&神经病
2019-04-28
【英语学习】【WOTD】prestigious 释义/词源/示例
2019-04-28
【英语学习】【WOTD】emote 释义/词源/示例
2019-04-28
【英语学习】【WOTD】obsequious 释义/词源/示例
2019-04-28
【英语学习】【WOTD】minion 释义/词源/示例
2019-04-28
【英语学习】【WOTD】sentient 释义/词源/示例
2019-04-28