我有一些项目,所有使用的一个项目用于数据模型。这些项目都有其自己的applicationContext.xml 文件与一堆重复性的数据的东西。

我想有一个modelContext.xml 文件和另一个我ui.xml等等。

我可以这样做?

有帮助吗?

解决方案

春天文档(v2.5.5部分3.2.2.1.):

它往往可以用来分裂 容器的定义纳入多 XML文件。一种方法,然后一个负载 应用程序方面这是 配置了所有这些XML 片段是使用的应用程序 背景下构造,这需要 多资源的位置。与 豆工厂、豆的定义阅读器 可以多次使用的阅读 定义中的每个文件转。

一般来说,弹簧队喜欢的 上述做法,因为它使 容器的配置文件不知道 事实上,他们正在 结合与其他人。一个备用的 方法是使用一个或更多 出现的元素 载豆的定义,从另一个 文件(文件或文件)。让我们看一下 示例:

<import resource="services.xml"/>
<import resource="resources/messageSource.xml"/>
<import resource="/resources/themeSource.xml"/>

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

在这个例子中,外部豆 定义载从3 文件,services.xml, 因为.xml, themeSource。xml。所有位置的路径 被认为是相对的 定义的文件做进口, 所以services.xml 在这种情况下必须 在同一个目录或类路径 位置,作为文件做的 进口的同时messageSource.xml 和 themeSource。xml必须在一个资源 位下面的位置 进口的文件。正如你可以看到, 导致削减实际上是被忽略,但是 鉴于这些考虑 相对路径,它可能是更好的 形成的未使用的削减。的 文件的内容是进口的 必须有效XML豆的定义 文件根据的弹簧架构 或DTD,包括在顶层 元素。

其他提示

我们这样做,在我们的项目在工作中,使用的类路径*资源的加载程序。对于某些应用程序,所有appcontext文件含有的应用程序id将被载入:

classpath*:springconfig/spring-appname-*.xml

是的,你可以做到这一点通过进口元素。

<import resource="services.xml"/>

每个元素的资源特性的有效路径(例如classpath:foo.xml)

给出什么样的尼古拉斯指出我我发现在文档。它让我可以选择在运行时豆情况下我很感兴趣。

GenericApplicationContext ctx = new GenericApplicationContext();
XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(ctx);
xmlReader.loadBeanDefinitions(new ClassPathResource("modelContext.xml"));
xmlReader.loadBeanDefinitions(new ClassPathResource("uiContext.xml"));
ctx.refresh();

这是我做了什么为我的一个项目。在你 web.xml 文件,可以定义的春季豆文件你想要你的应用程序使用:

  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
      /WEB-INF/applicationContext.xml
      /WEB-INF/modelContext.xml
      /WEB-INF/ui.xml
    </param-value>
  </context-param>

如果这不是定义 web.xml, 它会自动查找 /WEB-INF/applicationContext.xml

另一个要注意的是,尽管你可以这样做,如果你不是一个大风扇XML你可以做很多的东西在春天2.5注释。

是的,你可以使用的标签内的"主人"豆的文件。但什么为什么?为什么不清单的文件在contextConfigLocation方面param的wab.xml 或als位阵列的豆工厂吗?

我想多个文件更容易处理。你可以只选择他们中的一些试验,只是增加重新命名或删除的应用程序的一部分,你可以boundle不同的应用程序有同样的配置文件(a网络应用程序和命令行版本有一些重叠豆定义)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top