当前位置: 首页 > 面试题库 >

Spring ApplicationContext与Jar中的多个XML文件

贲铭
2023-03-14
问题内容

我需要使用当前Maven构建中的“主”
applicationContext-a.xml创建一个ApplicationContext。另一个连接来自另一个Maven构建的类,并在Maven依赖关系包含的jar中预设。

这里的想法:

ApplicationContext context = new ClassPathXmlApplicationContext( new String[] {
                "classpath*:applicationContext-*.xml"});

这应该从Classpath加载applicationContext-a.xml,因为它位于同一Project中。 这可行。

然后应该从依赖项jar中加载applicationContext-b.xml。 这行不通。

注意

"classpath*:applicationContext-*.xml"

仅匹配直接类路径中的XML,而jar中则不匹配。

我发现的是:

ApplicationContext context = new ClassPathXmlApplicationContext( new String[] {
                "classpath*:applicationContext-*.xml", "classpath*:applicationContext-b.xml"});

这是可行的,但前提是我必须明确告知罐子内xml的文件名:applicationContext-b.xml

我还需要使用它来进行集成测试:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"**/applicationContext*.xml"})
public class TestClass { ... }

最好的主意可能是自定义加载程序?必须有一种方法可以使此模式工作…

前一段时间有一个解决方案,它以相反的方式起作用:它仅从jar中获取applicationContext.xml。如果类路径中还有其他人,则它仅与此文件匹配。


问题答案:

classpath*:我认为是有限制的根文件夹下的文件不起作用。尝试将文件移动到文件夹下-
例如spring/application-a.xmlspring/application-b.xml。然后,您可以走一条路classpath*:/spring/application-*.xml



 类似资料:
  • 问题内容: 我有以下xml文件作为输入.... 我想将这个xml文件并通过像这样的java代码将其拆分为多个文件… File1.xml File2.xml File3.xml 以及更多的xml文件。每个xml文件最多包含10个或15个IRP_ACCOUNT。 有人能帮帮我吗 ? 问题答案: 快速而肮脏:

  • 我知道这是一个非常简单的问题,但由于我是Wildfly的新手,我还没有成功地完成它。 在JBoss 4.2的旧时代,当我想与多个war文件共享一个ejb jar文件时,我只是将ejb jar文件部署到应用服务器上,并在war项目中使用文件“jndi”配置jndi。属性放置在war文件的某个源目录中,如下所示: 现在,在Wildfly 8.1中,这种方法不再有效。我不知道jndi属性文件的内容是否发

  • 我在maven中使用jooq codigen插件从xml模式文件生成代码。 是否有从两个不同的模式文件生成代码的解决方案。示例:schema other。xml。

  • 问题内容: 我有多个JAR文件,必须将其添加到Eclipse中的classpath中。 是否可以将30个文件合并为一个文件并包含该文件? 问题答案: 您可能想看看jarjar。 如果您使用Ant任务,也可以进行以下操作:

  • 问题内容: 我正在寻找一堆罐子里的.class文件。 适用于一个文件。我试过了 什么都不打印。我能想到的唯一解决方案是全部解压缩,然后搜索。有没有更好的办法?我在LUnix上。 编辑 :扫描多个jar时,将jar文件名与类一起打印很有用。此方法效果很好: 产生的样本输出: 问题答案: 您需要传递给,以强制它为从中获取的每个文件名运行单独的命令: 否则,命令行类似于,其含义与预期的不同。 一种有用的

  • 问题内容: 到目前为止,我们有一个项目结构,其中包含名为的单个源文件夹,其中包含三个模块的源代码。我想做的是: 1)编译源代码。这可以通过sourceSets定义轻松完成: 2)将编译结果放入三个jar中。我通过三个“ jar”类型的任务来做到这一点: 我现在通过三个单独的任务来执行此操作: util.jar } client.jar } server.jar } 问题是应该包含and 中不包含的