java - 未指定的弹簧配置文件加载
问题描述
我有一个 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 会选择它作为配置文件参数。
解决方案
以防万一这可以帮助将来的人:
问题根源于我的项目的依赖。该依赖项碰巧使用与我自己相同的命令行参数来构建打包在 jar 中的环境特定属性文件的路径。依赖项目恰好像 Spring 配置文件一样构建了属性文件名/路径,因此它最终实际上与配置文件无关。当依赖jar未能提供properties文件时,Spring继续在我的项目中寻找该文件,最终抛出错误。
推荐阅读
- android - 在 BottomSheetDialog 片段中将视图固定到屏幕底部
- python - 你如何在 Python 中对两个列表进行二分搜索?
- ios - 如何从 UITextField 向 UITableView 添加多个数据?(斯威夫特 4)
- android - 如何在不使用 Recyclerview 中的 getAdapterPosition 的情况下在 ViewHolder 中获得正确的项目位置?
- c# - ASP.Net REST API 404
- zsh - zsh 无法将历史保存到 .zhistory
- python - 为什么 Python 在覆盖文件时会在文件开头添加不必要的字符?
- android - getResources().getStringArray 发生本机崩溃
- postgresql - 从 PostgreSQL 中的多个查询结果创建计算的枢轴
- html - 文本上的渐变叠加