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

问题

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

场景:

在我的情况下,我们有一个应用程序应该是全局的应用程序应该有AP{Asia-Pacific}, EM{Europ-Middleeast}, CA{Canada} and LA{Latin America}版本。

目前,我们有一个应用于EM一个区域,它有XML Configuration File ie, em-servelt.xml ,然后现在有针对AP region通用web.xml文件,我们有另一个ap-servlet.xml文件,并且em-servlet.xmlap-servlet.xml file方式都有相同的bean名称,但是它们会指向不同包中的Controllers,所以例如,em会指向类似com.em.DomainController和ap的东西。指向com.ap.DomainController

所以我的问题是

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

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

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

   ap org.springframework.web.servlet.DispatcherServlet 1    em org.springframework.web.servlet.DispatcherServlet 1  

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

  ap /ap/*   em /em/*  

web.xml文件控制DispatcherServlet正在使用的上下文文件。 如果将web.xml配置为具有名称为emDispatcherServlet ,则默认情况下它使用em-servlet.xml来加载Web上下文。

你的问题实际上有点令人困惑 – 你想让所有“版本”在应用程序的同一个实例中可用吗?

如果是这样,您描述的方法对于如何呈现多种语言/全球化您的应用程序听起来非常正统。 传统上,您只需要一个应用程序实例和所有控制器/实例,然后处理在显示级别翻译用户可见消息。 Spring对此有很好的支持。

如果您的目标是让应用程序的单个实例为所有这些语言/语言环境提供请求,那么听起来您可以消除大量此类冗余。