具有全局上下文上下文的Spring MVC注释:组件扫描?

时间:2009-11-18 16:09:48

标签: java spring java-ee spring-mvc

我有一个带有servlet-name“spring-mvc”的spring dispatcher servlet。 spring-mvc-servlet.xml如下所示:

<bean id="viewResolver"
    class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" 
        value="org.springframework.web.servlet.view.JstlView"/>
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
</bean>

<bean 
    class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>

<bean 
    class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>

在WEB-INF / annotation-context.xml中的文件中,我定义了注释扫描程序。我加载了所有带注释的类,其他spring bean可以加载它们。

但是,路径映射在spring-mvc中不起作用。如果我将context-scanner复制到spring-mvc-servlet.xml,那么它们就可以工作。

spring-mvc-servlet.xml是否可以引用在全局弹簧级定义的bean?

1 个答案:

答案 0 :(得分:2)

您可以load your contexts hierarchically以便annotation-context.xml中描述的上下文成为Spring MVC上下文的父级。然后,后者将能够访问前者定义的所有bean。

Spring documenation描述了几种方法。例如,在web.xml

// load parent context
<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>/WEB-INF/annotation-context.xml</param-value>
</context-param>

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

// load Spring MVC context
<servlet>
  <servlet-name>spring-mvc</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
</servlet>