spring mvc的父子上下文(WebApplicationContext)的作用范围,区别、影响面提现在哪里?


当我们使用springMVC时,一般会注册2个上下文(WebApplicationContext)
1、父上下文:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:context/mvc/*.xml
</param-value>
</context-param>

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

2、MVC本身的子上下文
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:context/mvc/*.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

那么他们两者有什么联系、区别、影响面都在哪些方面?
若我当前工程用springmvc进行架构,则是否可以只注册MVC子上下文,不注册父上下文,以及注册与不注册父上下文对程序有何影响及注意点?
网上有些帖子说是对事务有影响,请大牛们支招。。。

spring springMVC

我不是高达 11 years, 8 months ago

他们两者有什么联系、区别、影响面都在哪些方面?
他们的联系你也说了,一个是父上下文,一个是子,区别ContextLoaderListener初始化的上下文加载的Bean是对于整个应用程序共享的,DispatcherServlet初始化的上下文加载的Bean是只对Spring Web MVC有效的Bean,如Controller、HandlerMapping、HandlerAdapter等等,该初始化上下文应该只加载Web相关组件。

至于影响,如果你只注册了子上下文,也就是DispatcherServlet,那么当你使用ioc注入dao或者manager的时候就无法使用,因为这些方法只在spring mvc中使用,不是整个应用上下文

Nemo夜愿 answered 11 years, 8 months ago

Your Answer