首页 > 解决方案 > 未指定的弹簧配置文件加载

问题描述

我有一个 Maven/Spring 启动项目,我在其中看到了一些奇怪的行为。总而言之,一个 spring 配置文件正在尝试加载,但该配置文件不存在,也没有在我的代码中的任何地方指定。似乎配置文件名称是从不同的 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 会选择它作为配置文件参数。

标签: javaspringspring-bootspring-profilesspring-properties

解决方案


以防万一这可以帮助将来的人:

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


推荐阅读