Spring 未指定的配置文件加载

Spring profile loading without being specified

我有一个 Maven/Spring 引导项目,我在其中看到了一些奇怪的行为。总而言之,spring 配置文件正在尝试加载,但该配置文件不存在且不存在t 在我的代码中指定了任何地方。似乎配置文件名称是从不同的 Java 命令行 属性 获取的,这就是它让我感到困惑的原因。

基本上我的命令行看起来像这样:

Java -DEnvironmentID=qa01 -jar myapp.jar com.something.package.Loader LOAD

据我从 Spring 文档的命令行文档中了解到,我需要使用 -Dspring.profiles.active=profileName 参数调用 java 才能调用配置文件。因此,虽然我没有这样做,但 "qa01" 被选为配置文件,我的应用程序尝试加载 "application-qa01.properties"

在我的测试过程中,我还注意到对“-DEnvironmentID”参数的小修改将阻止它被选为配置文件(例如 "qa10"、"qa0"、"a01", "qa100", 等等...)

此时我很困惑,无法确定为什么它会被 Spring 选为配置文件参数。

以防万一这对以后的人有帮助:

问题的根源在于我的项目的依赖项。该依赖项碰巧使用了与我自己相同的命令行参数来构建到打包在 jar 中的环境特定属性文件的路径。依赖项项目恰好构建了属性文件 name/path 就像 Spring 配置文件一样,所以它最终实际上与配置文件无关。当依赖jar未能提供属性文件时,Spring继续在我的项目中寻找该文件,最终抛出错误。