gpt4 book ai didi

java - Spring ResourceLoader 在 JAR 中找不到资源

转载 作者:行者123 更新时间:2023-11-30 08:26:25 25 4
gpt4 key购买 nike

我希望创建一个基于 Spring 配置的层次结构。最简单的形式是几个“核心”库和几个能够覆盖“核心”库中的 bean 的“自定义”项目。

当通过 Maven 运行非常简单的单元测试时,无法找到“核心”配置导致测试失败。

final Resource[] resources = applicatonContext.getResources("classpath*:core-*spring.xml");

什么都不返回。它无法在我的自定义项目核心依赖项中找到预期的 core-one-spring.xmlcore-two-spring.xml

查看类路径中的 JAR 不是 Spring 的默认行为吗?或者我有什么特别的事情要做吗?

当我在我的 IDE (IntelliJ) 中运行时,测试完美通过,因为整个项目都已加载并且它们只是 Spring 可以找到的文件。

更新

如果我在没有通配符的情况下显式添加文件,Spring 能够找到这些文件。

@ContextConfiguration({"classpath:core-one-spring.xml", "classpath:core-two-spring.xml", "classpath:custom-spring.xml", "classpath:test-spring.xml"})

final Resource[] resources = custom.getResources("classpath:core-one-spring.xml");

最佳答案

来自manual

Please note that " classpath*:" when combined with Ant-style patterns will only work reliably with at least one root directory before the pattern starts, unless the actual target files reside in the file system. This means that a pattern like " classpath*:*.xml" will not retrieve files from the root of jar files but rather only from the root of expanded directories. This originates from a limitation in the JDK’s ClassLoader.getResources() method which only returns file system locations for a passed-in empty string (indicating potential roots to search).

关于java - Spring ResourceLoader 在 JAR 中找不到资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21511992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com