Spring boot Spring.profiles.include:donds';无法读取与配置文件相关的属性
有几种方法可以定义Spring引导应用程序的“活动配置文件”。 默认设置是通过命令行传递,如下所示:Spring boot Spring.profiles.include:donds';无法读取与配置文件相关的属性,spring-boot,Spring Boot,有几种方法可以定义Spring引导应用程序的“活动配置文件”。 默认设置是通过命令行传递,如下所示: java-Dspring.profiles.active=dev,local-jar-myapp.jar 它工作正常(如预期的那样):所有三组与概要文件相关的属性都将按正确的顺序加载: application.yaml application-dev.yaml将覆盖上一个 application local.yaml也将覆盖上一个属性(这些属性将具有最高优先级) 基于这样的想法,我的“本地”配置
java-Dspring.profiles.active=dev,local-jar-myapp.jar
它工作正常(如预期的那样):所有三组与概要文件相关的属性都将按正确的顺序加载:
application.yaml
application-dev.yaml
将覆盖上一个application local.yaml
也将覆盖上一个属性(这些属性将具有最高优先级)“spring.profiles.include”
特性来实现这一点。因此,以下行被添加到“application-local.yaml”
:
spring.profiles:
include:
- dev
我希望,现在我只能在命令行中传递“local”配置文件,并且“dev”配置文件将自动应用(当然,还有他的属性):
java-Dspring.profiles.active=local-jar-myapp.jar
但是oop*:忽略'application-dev.yaml'
中的属性
为什么?是虫子吗?这是一种迫使我直接在命令行中列出所有配置文件的功能吗?
我确信概要文件激活的行为应该是相同的,而活动概要文件列表是如何传递给Spring Boot framework的
申请书:
application-dev.yaml:
application-local.yaml:
Run1:java-Dspring.profiles.active=dev,local-jarmyapp.jar
正确输出:
myProps = MyProps(name=default-name, url=dev-url, user=local-user)
activeProfiles = dev, local
myProps = MyProps(name=default-name, url=default-url, user=local-user)
activeProfiles = local
这是正确的,因为url=dev url
Run2:java-Dspring.profiles.active=local-jar-myapp.jar
输出不正确:
myProps = MyProps(name=default-name, url=dev-url, user=local-user)
activeProfiles = dev, local
myProps = MyProps(name=default-name, url=default-url, user=local-user)
activeProfiles = local
这是不正确的,因为url=defaulturl
和activeProfiles
根本不包含“dev”
请帮助我了解如何使用
spring.profiles。在yaml中包含功能以构建一种顶级配置文件,该配置文件将自动激活其他配置文件。在Run2中,您以本地方式提供配置文件
i、 e
因此spring将首先加载application.yml,然后加载application local.yml
我可以看出输出是预期的
由于application-local.yml中没有name和url等属性,因此这些字段的值将与application.yml中的值相同
仅供参考:始终调用application.yml,而与profile无关,然后它会被-Dspring.profiles.active属性中提到的profile覆盖在Run2中,您将profile设置为local
i、 e
因此spring将首先加载application.yml,然后加载application local.yml
我可以看出输出是预期的
由于application-local.yml中没有name和url等属性,因此这些字段的值将与application.yml中的值相同
仅供参考:无论配置文件如何,总是调用application.yml,然后它会被-Dspring.profiles.active属性中提到的配置文件覆盖,该配置文件由您推荐测试。“本地”配置文件被重命名为“bar”(以及配置文件文件文件)输出:``myProps=myProps(name=default name,url=default url,user=bar user)activeProfiles=bar````所以-同样的问题也存在:-(@NakulGoyal,根据您的建议进行测试。“本地”配置文件被重命名为“bar”(以及配置文件文件文件)输出:```myProps=myProps(name=default name,url=default url,user=bar user)activeProfiles=bar```so-同样的问题:-(是的,它现在是如何运行的。但是,在同一时间,我的application-local.yml中有以下行:spring.profiles.include:-dev
SpringBoot应该将dev配置文件添加到帐户中并加载application-dev.yaml,你不这么认为吗,@Nakul?是的,它现在是如何运行的。但是,在同一时间,有以下内容我的application-local.yml中的行:spring.profiles.include:-dev
SpringBoot应该将dev配置文件添加到帐户并加载application-dev.yaml,你不这么认为吗,@Nakul?
myProps = MyProps(name=default-name, url=dev-url, user=local-user)
activeProfiles = dev, local
myProps = MyProps(name=default-name, url=default-url, user=local-user)
activeProfiles = local
-Dspring.profiles.active=local