Spring MVC Аннотации с контекстом глобального контекста: компонент сканирования? - PullRequest
3 голосов
/ 18 ноября 2009

У меня есть сервлет-диспетчер пружин с именем сервлета "spring-mvc". 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-mvc. Если я скопирую сканер контекста в spring-mvc-servlet.xml, тогда они будут работать.

Возможно ли для spring-mvc-servlet.xml ссылаться на bean-компоненты, определенные на глобальном уровне весны?

1 Ответ

2 голосов
/ 18 ноября 2009

Вы можете загрузить свои контексты иерархически , чтобы контекст, описанный в annotation-context.xml, стал родителем для вашего контекста Spring MVC. Затем последний сможет получить доступ ко всем определениям bean-компонентов в первом.

Весенняя документация описывает несколько способов сделать это. Например, в вашем 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...