(1) Spring的Context是org.springframework.context.ApplicationContext,它是root context,即最顶层的context。 在web.xml中是这样定义的:
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
<context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring/application-context.xml</param-value> </context-param>
(2) Spring MVC的Context是WebApplicationContext,他是一个child context,即子Context。 Spring MVC实际是一个Servlet,即WebApplicationContext
<servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>WEB-INF/spring/servlet-context.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
(3)子Context可以看到所有root context中定义的bean,反过来则不能。
也就是说,你在mvc的controller中可以注入你在spring中定义的那些service,dao什么的, 反过来,在service中想注入controller是不行的。
在controller中可以通过RequestContextUtils.getWebApplicationContext(request)方法取得web application context。
|