У меня есть два DispatcherServlets. Один из них настроен в web.xml, другой настроен с моей реализацией org.springframework.web.WebApplicationInitializer. Как я понимаю, делая это, я создаю два ApplicationContexts. Проблема в том, что они должны использовать один и тот же ApplicationContext. Инициализация выглядит так, если это помогает понять мой вопрос. Web.xml:Два DispatcherServlets имеют один и тот же ApplicationContext
<servlet>
<servlet-name>web-xml-dispatcher</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/dispatcher-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>web-xml-dispatcher</servlet-name>
<url-pattern>/web-test/*</url-pattern>
</servlet-mapping>
WebApplicationInitializer:
public class WebAppInit implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
context.scan("com.test");
DispatcherServlet servlet = new DispatcherServlet(context);
ServletRegistration.Dynamic dynamic = servletContext.addServlet("initializer-dispatcher", servlet);
dynamic.addMapping("/init-test/*");
}
}
Итак, есть ли способ, чтобы разделить одну ApplicationContext между диспетчерами, сконфигурированных как это?
Да. Вы можете определить контекст веб-приложения корень: http://stackoverflow.com/questions/3521942/spring-root-webapplicationcontext-for-servlet –
@andresoviedo, но как я могу определить, что мой DispatcherServlet настроен WebApplicationInitializer следует использовать корневой контекст? –
Я отправляю вам ответ ... –