我正在构建一个使用Maven的web应用程序,它由一个主系统和多个模块wars组成,每个应用程序都是一个基于Spring-3的项目,有自己的ApplicationContext.xml文件。系统和模块是war文件,我使用Maven使用布局合并它们。
首先,只加载系统应用程序上下文文件,系统本身以不同的名称加载存储在WEB-INF/classes/application_context文件夹中的各个模块的应用程序上下文。
以下是加载系统的方式:
ServletContext context = SessionUtils.getServletContext();
ApplicationContext appContext = WebApplicationContextUtils
.getRequiredWebApplicationContext(context);这就是系统如何执行加载其余应用程序上下文的工作。
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文件吗?我想要一些直接转发的方式。
发布于 2013-01-15 10:20:29
在指定上下文路径时可以使用通配符。例如:
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:conf/*-Context.xml");看一看部分:5.7.2应用程序上下文构造器资源路径中的通配符。
您还可以在主上下文中使用wilcard,因此当加载服务器上下文时,该wilcard中包含的所有内容也将被加载。这就是在服务器启动时如何实现满载的方法。
<import resource="classpath:application_context/ApplicationContext*.xml" />
https://stackoverflow.com/questions/14333533
复制相似问题