zoukankan      html  css  js  c++  java
  • SpringMVC 上下文webApplicationContext

    使用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(vopoo)和jsp页面。

    写一个小功能 7、8个类就写出来了。 开发人员说我就是想接点私活儿,和PHP,ASP抢抢饭碗。但我又是Java程序猿。最好的结果是大项目能做好。小项目能做快。

    所以“激进型”方案就出现了 -----没有接口、没有Service层、还能够没有众多的O(vopoo)。那没有Service层事务控制在哪一层?仅仅好上升的Action 层。

     
    本文不想说这是不是正确的思想。我想说的是Spring不会限制你这样做。 
    因为有了父子上下文,你将无法实现这一目标。解决方式是仅仅使用子上下文容器。不要父上下文容器 。所以数据源、服务层、DAO层、事务的Bean、Action的Bean都放在子上下文容器中。

    就能够实现了,事务(注解事务)就正常工作了。这样才够激进。 
    总结:不使用listener监听器来载入spring的配置文件。仅仅使用DispatcherServlet来载入spring的配置,不要父子上下文,仅仅使用一个DispatcherServlet,事情变得简单,什么是麻烦的事情是走了。

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

  • 相关阅读:
    C# 学习之旅(1)
    SqlServer安装教程
    Aop和Filter区别
    Redis入门
    SpringMVC与Struts2的主要区别
    SpringMVC执行流程
    ssm初始化环境搭建
    Oracle 高效分页
    Oracle 综合:游标和动态SQL
    Oracle 动态SQL
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4604075.html
Copyright © 2011-2022 走看看