Java springboot外部配置-特定于配置文件的配置
根据SpringBoot文档,配置顺序如下: 打包jar之外的特定于概要文件的应用程序属性(应用程序-{Profile}.properties和YAML变体) jar中打包的特定于概要文件的应用程序属性(应用程序-{Profile}.properties和YAML变体) 打包jar之外的应用程序属性(Application.properties和YAML变体) 打包在jar中的应用程序属性(Application.properties和YAML变体) 在我的项目中,我有一个名为“prod”的配置文件和以下文件:Java springboot外部配置-特定于配置文件的配置,java,spring,spring-boot,yaml,spring-boot-configuration,Java,Spring,Spring Boot,Yaml,Spring Boot Configuration,根据SpringBoot文档,配置顺序如下: 打包jar之外的特定于概要文件的应用程序属性(应用程序-{Profile}.properties和YAML变体) jar中打包的特定于概要文件的应用程序属性(应用程序-{Profile}.properties和YAML变体) 打包jar之外的应用程序属性(Application.properties和YAML变体) 打包在jar中的应用程序属性(Application.properties和YAML变体) 在我的项目中,我有一个名为“prod”的配置
- application.yml(罐内)
- application-prod.yml(罐内)
应用程序.yml
将被内部应用程序-prod.yml
覆盖,因此我需要确保外部文件被视为特定于配置文件的配置文件
我尝试使用:
-Dspring.config.location=/application-prod.yml
我也尝试过:
-Dspring.config.location=file:/application-prod.yml
在所有情况下,我都从内部application-prod.yml
如果我完全删除了内部配置文件,那么我会从外部获取该值(因此我知道配置会拾取该文件)
据我所知,此外部文件被视为等同于通用应用程序.yml
,而不是特定于配置文件的文件
如何将其配置为特定于配置文件的外部配置?找到了答案:
您需要在外部使用目录
来设置特定于配置文件的配置文件,而不是直接使用该文件,它需要以/
结尾。因此,它必须是:
-Dspring.profiles.active=prod
-Dspring.config.location=//config/
(以/
结尾的任何路径)
其中有一个:
application-prod.yml
为什么不直接命名application-prod.yml
?我没有试图绕过它,而是将它命名为application-prod.yml
。只是spring的参数Dspring.config.location
忽略了这是一个特定于概要文件的配置,并将其视为通用配置。如何指定这是特定于配置文件的?我试图按照文档中的顺序或规则进行操作,而不是绕开它。你想得太多了。你不需要spring.config.location
。它已经覆盖了你想要的。@M.Deinum可能你还没有理解我的问题。我需要“spring.config.location”来传递外部文件的位置,如果它与您不需要的jar位于同一位置,并且如果您想要一个位置,那么指定一个位置而不是文件的完整路径,只使用目录(file://
spring boot将检测application.yml
等)文档中也明确说明了这一点。>spring.config.location中指定的文件按原样使用,不支持特定于配置文件的变体,并由任何特定于配置文件的属性覆盖。