首页 > 解决方案 > 找不到将 spring.config.location 的行为恢复为旧 Springboot 版本的原因

问题描述

我们有一个部署环境,它使用 to/uses-spring.config.location=app.properties属性来提供配置位置。就像在这篇文章和这个github-br中提到的那样,我不知道对于我当前的 springboot 版本,即2.2.5.RELEASE属性行为已经改变。正如预期的那样,我们必须使用spring.config.additional-location它才能从 jar 中选择默认值。

然而,问题是对于同一环境中的另一个应用程序,它具有相同的 spring boot 版本,即 2.2.5.RELEASEspring.config.location是旧的方式。所以我仍然想知道这是如何发生的,例如由于其他应用程序具有而我们的应用程序没有的其他依赖关系?

我不知道要给出什么代码示例,因为我不知道是什么代码导致行为恢复到旧版本。但是,我可以看到这两个应用程序的实现之间存在一些差异:

  1. 另一个应用程序使用 @Value 注释。我们的应用程序使用 @ConfigurationProperties 来加载属性值。我尝试使用它,但配置位置行为没有恢复。
  2. 在他们使用过的一些课程上@PropertySource(value = "classpath:application.properties")
  3. 其他应用程序相对较旧,如果有任何不同,他们一直在升级 springboot 版本。

这些是我现在可以发现的一些差异。但是不确定是什么导致了这种行为变化,请帮忙。

标签: springspring-bootspring-boot-configuration

解决方案


我怀疑它的使用@PropertySource导致了行为的差异。@PropertySource("classpath:application.properties")将从类路径上找到的第一个资源加载属性,而application.properties不管如何配置。spring.config.locationspring.config.additional-location


推荐阅读