小编典典

将applicationContext拆分为多个文件

spring

将Spring的配置拆分为多个xml文件的正确方法是什么?

此刻我有

  • /WEB-INF/foo-servlet.xml
  • /WEB-INF/foo-service.xml
  • /WEB-INF/foo-persistence.xml

web.xml有以下内容:

<servlet>
    <description>Spring MVC Dispatcher Servlet</description>
    <servlet-name>intrafest</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/foo-*.xml
        </param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
</servlet>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
            /WEB-INF/foo-*.xml
    </param-value>
</context-param>


<listener>
    <listener-class>
        org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>

实际问题:

  • 这种方法正确/最佳吗?
  • 我真的需要同时指定中的配置位置DispatcherServlet 和该context-param板块?
    我需要记住什么才能能够引用foo-servlet.xmlfrom中定义的bean foo-service.xml?这与contextConfigLocationin 指定有关web.xml吗?

更新1:

我正在使用Spring Framework 3.0。据我了解,我不需要像这样进行资源导入:

 <import resource="foo-services.xml"/> 

这是正确的假设吗?


阅读 731

收藏
2020-04-12

共1个答案

小编典典

我发现以下设置最简单。

使用DispatcherServlet的默认配置文件加载机制:

该框架将在初始化DispatcherServlet时,在你的Web应用程序的WEB-INF目录中查找名为[servlet-name] -servlet.xml的文件,并在其中创建定义的Bean(覆盖所有使用在全球范围内具有相同的名称)。

就你而言,只需intrafest-servlet.xml在WEB-INFdir中创建一个文件,而无需在中指定任何特定信息web.xml

intrafest-servlet.xml文件中,你可以使用import来组成你的XML配置。

<beans>
  <bean id="bean1" class="..."/>
  <bean id="bean2" class="..."/>

  <import resource="foo-services.xml"/>
  <import resource="foo-persistence.xml"/>
</beans>

请注意,Spring团队实际上在创建(Web)ApplicationContext时更喜欢加载多个配置文件。如果你仍然希望以此方式进行操作,那么我认为你无需同时指定上下文参数(context-param)和 servlet初始化参数(init-param)。两者之一。你也可以使用逗号指定多个配置位置。

2020-04-12