首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态合并多个应用程序上下文文件

动态合并多个应用程序上下文文件
EN

Stack Overflow用户
提问于 2013-01-15 08:13:52
回答 1查看 3.1K关注 0票数 2

我正在构建一个使用Maven的web应用程序,它由一个主系统和多个模块wars组成,每个应用程序都是一个基于Spring-3的项目,有自己的ApplicationContext.xml文件。系统和模块是war文件,我使用Maven使用布局合并它们。

首先,只加载系统应用程序上下文文件,系统本身以不同的名称加载存储在WEB-INF/classes/application_context文件夹中的各个模块的应用程序上下文。

以下是加载系统的方式:

代码语言:javascript
复制
ServletContext context = SessionUtils.getServletContext();
ApplicationContext appContext = WebApplicationContextUtils
            .getRequiredWebApplicationContext(context);

这就是系统如何执行加载其余应用程序上下文的工作。

代码语言:javascript
复制
String filename = "/WEB-INF/classes/application_context";
ServletContext servContext = SessionUtils.getServletContext();
String pathname = servContext.getRealPath(filename);
File dir = new File(pathname);
List<String> contexts = new ArrayList<String>();
for (File child : dir.listFiles()) {
    contexts.add("/application_context/" + child.getName());
}
ApplicationContext context = new ClassPathXmlApplicationContext(
    contexts.toArray(new String[contexts.size()])); 

我的问题是,是否有一种方法可以同时加载每个Spring上下文?正如我所看到的,有机会执行弹簧进口,但最初系统的应用程序上下文对模块上下文一无所知。Maven也可以使用将仅一个应用程序上下文合并,但是我不知道在这种情况下如何使用它,我应该编写一个xslt文件吗?我想要一些直接转发的方式。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-15 10:20:29

在指定上下文路径时可以使用通配符。例如:

代码语言:javascript
复制
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:conf/*-Context.xml");

看一看部分:5.7.2应用程序上下文构造器资源路径中的通配符

您还可以在主上下文中使用wilcard,因此当加载服务器上下文时,该wilcard中包含的所有内容也将被加载。这就是在服务器启动时如何实现满载的方法。

<import resource="classpath:application_context/ApplicationContext*.xml" />

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14333533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档