我正在构建一个使用 Maven 并由一个主系统和许多模块战争组成的 Web 应用程序,每个都是一个基于Spring-3的项目,具有他自己的ApplicationContext.xml 文件。系统和模块是战争文件,我使用 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 Context?正如我所见,有机会进行Spring import,但最初系统的应用程序上下文对模块的内容一无所知。Maven 也可用于将每个应用程序上下文合并到一个唯一的一个中,但我不知道在这种情况下如何使用它,我应该编写一个 xslt 文件吗?我想要一些直接的方式。