Spring3 ,Spring3 MVC 配置文件整合问题,哪种配置更好?
<!-- 监听器,用于初始化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做为父上下文,源码里面有,如果只有一个子上下文那没关系了,怎么整看你了。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。