Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java springboot外部配置-特定于配置文件的配置_Java_Spring_Spring Boot_Yaml_Spring Boot Configuration - Fatal编程技术网

Java springboot外部配置-特定于配置文件的配置

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”的配置

根据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中指定的文件按原样使用,不支持特定于配置文件的变体,并由任何特定于配置文件的属性覆盖。