我有一个带有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?
答案 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>