开发者社区> 问答> 正文

spring3 ,spring3 mvc 配置文件整合问题,哪种配置更好?-java报错

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

Java代码        
  1.     <!-- 监听器,用于初始化spring框架 -->  
  2.     <listener>  
  3.     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  4.     </listener>  
  5.     <context-param>     
  6.         <param-name>contextConfigLocation</param-name>     
  7.         <param-value>/WEB-INF/config/applicationContext.xml</param-value>     
  8.     </context-param>  
  9.       
  10.     <!-- Spring MVC 的Servlet,以启动Spring MVC模块-->  
  11.     <servlet>  
  12.         <servlet-name>dipatcher</servlet-name>  
  13.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  14.         <init-param>  
  15.             <param-name>contextConfigLocation</param-name>  
  16.             <param-value>/WEB-INF/config/spring-mvc.xml</param-value>  
  17.         </init-param>  
  18.         <load-on-startup>1</load-on-startup>  
  19.     </servlet>  
  20.     <servlet-mapping>  
  21.         <servlet-name>dipatcher</servlet-name>  
  22.         <url-pattern>*.do</url-pattern>  
  23.     </servlet-mapping>  

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

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

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

展开
收起
montos 2020-05-29 22:26:21 520 0
1 条回答
写回答
取消 提交回答
  • 前者称为传统型,具有父上下文(保存数据源、服务层、DAO层、事务的Bean)、子上下文(保存mvc中相关的bean)。由于父上下文容器不能访问子上下文容器中内容,事务的Bean在父上下文容器中,无法访问子上下文容器中内容,就无法对子上下文容器中Controller进行AOP(主要指事务),适合大项目。
    后者称为激进型,只使用子上下文,满足传统型不能满足的问题,适合小项目。
    无所谓好坏,就看哪个适合。

    ######楼上正解。spring mvc就是子上下文,在启动的时候它会把 application context做为父上下文,源码里面有,如果只有一个子上下文那没关系了,怎么整看你了。######我觉得,第一种配置不适合测试吧,第二种比较好进行测试,测试的时候,直接加载 spring-mvc.xml就可以取得上下文了,新手求指教

    2020-05-29 22:26:37
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载