SpringMVC 上下文webApplicationContext

SpringMVC 上下文webApplicationContext

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

使用listener听众载入配置,一般Struts+Spring+Hibernate是使用listener监听器的。例如以下

<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,事情变得简单,什么是麻烦的事情是走了。

版权声明:本文博客原创文章。博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/117741.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Spring、SpringBoot和SpringCloud的关系

    Spring、SpringBoot和SpringCloud的关系1、SpringBoot是Spring的一套快速配置脚手架,可以基于SpringBoot快速开发单个微服务。2、SpringCloud是一个基于SpringBoot实现的云应用开发工具。3、SpringBoot专注于快速、方便集成的单个个体,SpringCloud是关注全局的服务治理框架。4、SpringBoot使用了默认大于配置的理念,很多集成方案已经帮你选择好了,能不配置就…

  • Hello Qt——QMake用户指南[通俗易懂]

    Hello Qt——QMake用户指南[通俗易懂]一、QMake使用QMake提供了一个用于管理应用程序、库、其它组件的构建过程的面向工程系统。QMake扩展了每个工程文件的信息,生成一个执行编译和链接过程的必须命令的MakeFile。1、描述工程工程文件.pro描述了工程信息。工程文件信息会被qmake用于生成包含构建过程中所需的所有命令的MakeFile。工程文件通常包含一系列头文件和源文件,通用配置信息以及音乐程序指定的细节,如应用程序的链接库、搜索路径。工程文件包含一定数量的不同元素,如注释、变量声明、内置函数以及简单的控制结构

  • ASP.Net中menu控件使用「建议收藏」

    ASP.Net中menu控件使用「建议收藏」为了使用方便asp.net中提供了两类控件html控件与用户控件。这里不在详细介绍。menu属于用户控件。menu最重要的是item属性,item包含了menu控件要显示的类表,几级菜单神马的,点击item属性后面出现一个对话框,也可以点menu控件的箭头如下图:点击编辑菜单项也会弹出对话框,根据自己爱好可以进行设定,下面是我自己设定的:当然旁边对应的是每个条目对应的属

  • oracle dba书籍推荐_推荐给大学生必读的书

    oracle dba书籍推荐_推荐给大学生必读的书推荐给DBA的Oracle书籍

  • 反演定理及其应用_反演定理的证明

    反演定理及其应用_反演定理的证明一、莫比乌斯反演莫比乌斯反演公式:若F(n)=∑i|nf(i)F(n)=∑i|nf(i)F(n)=\sum_{i|n}f(i)则f(n)=∑i|nμ(i)F(ni)f(n)=∑i|nμ(i)F(ni)f(n)=\sum_{i|n}\mu(i)F(\frac{n}{i})为什么呢?请看证明:由于莫比乌斯函数具有性质∑i|nμ(i)=[n=1]∑i|nμ(i)=[n=1]\…

    2022年10月22日
  • 如何在系统中添加字体(添加字体到系统)

    笔者最近在使用win10自带的OneNote笔记本记笔记的时候,发现笔者电脑中没有华文新魏这个字体,最开始以为是OneNote不带有这个字体,经过一段时间的收集资料后发现,是笔者电脑win10系统中不带有这个字体,现将有关概念和字体安装方法做一下记录。字体是win10系统自己带有的,其他的软件自能从win10系统中用调用,而不是说字体是某些软件自带的,比如如果office的PPT中含有华文新魏这个字体,那么OneNote中就必然也含有华文新魏这个字体,并不会存在一个软件有这个字体而另一个软件不含有这个字体

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号