2012-03-02 40 views
5

我有一个Spring MVC的项目设置像这样之间豆类:春天看不到的servlet上下文和contextConfigLocation的豆

<servlet> 
<servlet-name>appServlet</servlet-name> 
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
<init-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/spring-contexts/servlet-context.xml</param-value> 
</init-param> 
<load-on-startup>1</load-on-startup> 

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/spring-contexts/configuration-context.xml</param-value> 
</context-param> 

,如果我在做配置的bean出现-context.xml并在servlet-context.xml中引用一个bean时,它找不到它。这些被创建为两个不同的环境吗?为什么会发生这种情况/一般这样工作?

回答

6

是的,有两个上下文相互堆叠(父和子上下文)。

DispatcherServlet中的Bean(servlet-context.xml)可以从ContextLoaderListener(configuration-context.xml)访问bean,但不能以其他方式访问Bean。

所以把基本的东西放在configuration-context.xml和网络相关的一次到servlet-context.xml

@see也是这个堆栈溢出问题:ContextLoaderListener or not?

+0

请你告诉我,为什么我不能达到,从我的网络服务程序,在规定的applicationContext的txManager? – vault 2014-11-08 16:59:38