如果我们有多个XML配置文件,DispatcherServlet如何工作?

Rac*_*hel 10 java architecture spring

问题

如果我们有多个XML配置文件,DispatcherServlet如何工作,那么Spring Application Context如何加载它们并对它们起作用?

场景:

在我的例子中,我们有一个应用程序应该是全局的,应用程序应该具有AP{Asia-Pacific}, EM{Europ-Middleeast}, CA{Canada} and LA{Latin America}版本.

目前,我们有一个区域的应用程序EM,它有它的XML Configuration File i.e, em-servelt.xml,然后有通用web.xml文件,因为AP region我们有另一个ap-servlet.xml文件,顺便说一下,两个em-servlet.xml并且ap-servlet.xml file将具有相同的bean名称,但它们将指向不同包中的控制器,所以对于例如,em将指向类似的东西,com.em.DomainController而ap将指向com.ap.DomainController.

所以我的问题是

如何将请求映射到不同的控制器以及如何识别请求,以便它应该从ap-servlet.xml或em-servlet.xml读取?

我希望能够清楚地陈述我的问题.

Chi*_*ang 26

web.xml文件可以配置多个DispatcherServlet实例,每个实例都有自己的配置.每个DispatcherServlet实例都WebApplicationContext与其他DispatcherServlet实例分开配置,因此您可以使用相同的bean名称而不会影响其他应用程序上下文.

<!-- configured by WEB-INF/ap-servlet.xml -->
<servlet>
    <servlet-name>ap</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<!-- configured by WEB-INF/em-servlet.xml -->
<servlet>
    <servlet-name>em</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
Run Code Online (Sandbox Code Playgroud)

您还必须配置web.xml将请求映射到适当的DispatcherServlet.例如,每个区域可以具有不同的URL路径.

<servlet-mapping>
    <servlet-name>ap</servlet-name>
    <url-pattern>/ap/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>em</servlet-name>
    <url-pattern>/em/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)