Spring3 ,Spring3 MVC 配置文件整合问题,哪种配置更好?

正常的整合是要在web.xml里面配置spring监听器,spring mvc的dispath servlet,代码如下: 

    <!-- 监听器,用于初始化spring框架 -->  
    <listener>  
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
    </listener>  
    <context-param>     
        <param-name>contextConfigLocation</param-name>     
        <param-value>/WEB-INF/config/applicationContext.xml</param-value>     
    </context-param>  
      
    <!-- Spring MVC 的Servlet,以启动Spring MVC模块-->  
    <servlet>  
        <servlet-name>dipatcher</servlet-name>  
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
        <init-param>  
            <param-name>contextConfigLocation</param-name>  
            <param-value>/WEB-INF/config/spring-mvc.xml</param-value>  
        </init-param>  
        <load-on-startup>1</load-on-startup>  
    </servlet>  
    <servlet-mapping>  
        <servlet-name>dipatcher</servlet-name>  
        <url-pattern>*.do</url-pattern>  
    </servlet-mapping>  



现在的是:我把一些本在spring配置文件里配置的信息,如数据源,事物,与mybatis整合的代码等等,全部移到spring-mvc.xml里面。然后在web.xml里面去掉spring监听器的代码,代码如下:  
    
    <!-- Spring MVC 的Servlet,以启动Spring MVC模块-->  
    <servlet>  
        <servlet-name>dipatcher</servlet-name>  
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
        <init-param>  
            <param-name>contextConfigLocation</param-name>  
            <param-value>/WEB-INF/config/spring-mvc.xml</param-value>  
        </init-param>  
        <load-on-startup>1</load-on-startup>  
    </servlet>  
    <servlet-mapping>  
        <servlet-name>dipatcher</servlet-name>  
        <url-pattern>*.do</url-pattern>  
    </servlet-mapping>  

程序一切正常,数据源,事物,与mybatis的整合都没问题

现在我想问:这两种方式的区别,哪种比较好。给个理由!


答1:

前者称为传统型,具有父上下文(保存数据源、服务层、DAO层、事务的Bean)、子上下文(保存mvc中相关的bean)。由于父上下文容器不能访问子上下文容器中内容,事务的Bean在父上下文容器中,无法访问子上下文容器中内容,就无法对子上下文容器中Controller进行AOP(主要指事务),适合大项目。 
后者称为激进型,只使用子上下文,满足传统型不能满足的问题,适合小项目。 
无所谓好坏,就看哪个适合。 

答2:
楼上正解。spring mvc就是子上下文,在启动的时候它会把 application context做为父上下文,源码里面有,如果只有一个子上下文那没关系了,怎么整看你了。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。