如果我们有多个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.xml
和ap-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
配置为具有名称为em
的DispatcherServlet
,则默认情况下它使用em-servlet.xml
来加载Web上下文。
你的问题实际上有点令人困惑 – 你想让所有“版本”在应用程序的同一个实例中可用吗?
如果是这样,您描述的方法对于如何呈现多种语言/全球化您的应用程序听起来非常正统。 传统上,您只需要一个应用程序实例和所有控制器/实例,然后处理在显示级别翻译用户可见消息。 Spring对此有很好的支持。
如果您的目标是让应用程序的单个实例为所有这些语言/语言环境提供请求,那么听起来您可以消除大量此类冗余。