环境详情:
我有下面的application.yml文件,
creds:
first: default value
---
spring.profiles: dev
creds:
first: dev value
---
spring.profiles: dev & mobile
creds:
first: dev-mobile value
而且
spring.profiles.active=dev,移动
然而,问题是它总是加载'defaultvalue'。
配置文件“dev&mobile”下的属性从不加载。
感谢任何帮助。
https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config-multi-profile-yaml
似乎您在同一个文件中添加了每个环境,对于dev application-dev.yml应该是一个文件
reds:
first: dev value
生产的另一个文件
应用程序-Production.yml
reds:
first: production value
继续。
首先,如果您单独定义配置文件(profile:dev)的话,您的application.properties不可能选择组合的配置文件(profile:dev&mobile)&也不可能再次将它与其他配置文件组合(再次与mobile组合,我指的是dev&mobile)。这不会给你任何例外,但你的组合配置文件将不会得到一个选择。
文档中说,我们可以将概要文件与符号和其他符号结合起来,请参阅文档,我们可以进行任何复杂的组合。但是,我不建议您单独定义一个配置文件&也可以将它与其他配置文件结合起来,就像您在单独定义dev配置文件之后将dev和mobile结合起来一样。
下面的示例说明了它的工作原理?
application.yaml
creds:
first: default value
---
spring:
profiles: dev
creds:
first: dev value
---
spring:
profiles: mobile
creds:
first: mobile val
---
spring:
profiles: dev & mobile
creds:
first: dev-mobile value
如果我们单独定义一个配置文件&将它与其他配置文件组合起来,会发生什么?(和你一样)。
在这个application.yml文件中,我定义了dev、mobile&combined概要文件(dev&mobile),我们知道还有一个默认概要文件。
如果我不调用任何配置文件,正如我们所知,它将选择默认配置文件。例如,如果我们正在读取如下所示的属性:
@Value("${creds.first}")
String value;
属性值:默认值
如果--spring.profiles.active=dev,那么它将选择dev profile。
属性值:dev值
如果--spring.profiles.active=mobile,那么它将选择mobile Profile。
属性值:移动值
如果--spring.profiles.active=mobile,dev,那么在这里,我们尝试同时调用两个概要文件,理想情况下,我们希望选择组合的概要文件。但它不会被采摘。因为我们定义了单独的profiles(profile:dev和profile:mobile),首先它会从mobile profile读取属性,然后它会从dev profile读取属性,如果找到,它会用dev profile的属性值重写。如果找不到,它将只坚持移动配置文件的属性值。我是说,上面写着
属性值:dev值
如果--spring.profiles.active=dev,mobile,那么在这里,它首先从dev配置文件中读取属性值,然后再次在mobile配置文件中查找属性,如果找到,则覆盖该值。如果找不到,它将只坚持dev配置文件的属性值。
这就是它不会读取组合配置文件(dev&mobile)的原因。
如何读取组合配置文件&何时读取组合配置文件?
根据文档,它可以选择一个组合的配置文件,如果提到的配置文件不应该在其他地方单独定义:
示例:application.yaml
creds:
first: default value
---
spring:
profiles: showcase
creds:
first: showcase value
---
spring:
profiles: dev & mobile
creds:
first: dev-mobile value
在这里,dev、mobile使用&组合在一起,它们在别处没有单独定义。因此,现在如果我们调用--spring.profiles.active=dev,mobile,它将选择组合的概要文件值
属性值:dev-mobile值
最后,如果--spring.profiles.active=dev或--spring.profiles.active=mobile,它将不会选择组合的概要文件。因此,默认配置文件将会生病。
属性值:默认值
示例:https://github.com/donthadineshkumar/multi-profile-document.git
你好,我在我的项目中使用Spring Boot和Hikari进行db连接。spinger引导版本是2.2.5.RELEASE,Hikari是3.4.2。但是,当我运行我的项目时,它总是使用Hikari默认配置值,而不是使用我的属性文件中的值。这是我的属性: 这是我在应用程序配置中的数据源: 下面是输出:10:23:19.050[main]DEBUG com . zax xer . hikari .
我的Spring云配置服务器在尝试使用http://localhost:8080/application/default访问属性文件内容时抛出以下错误 我的申请。配置服务器中的属性如下所示 <代码>Spring。云配置。服务器吉特。uri=/Users/joe/MyProgs/Java/spring ws/config,我甚至尝试了这个spring。云配置。服务器吉特。uri=${HOME}/My
我正在使用Java的发送SMS。我已经加载了log4j jar文件,并将文件放置在正确的位置,但它仍然无法读取它,并得到以下异常: 例外文本:
我在玩spring boot并试图创建一个特定于配置文件的配置文件。我称之为。 我还试图使用gradle命令从终端运行:,但得到了相同的错误。只有当我将YAML文件重构为时,它才起作用。我做错了什么?我打算有3个配置文件,如本地,开发和Prod。
问题内容: Cobra和Viper中的文档使我感到困惑。我做了,然后在项目目录中做了。我有一个名为,这里是命令中的init函数。 我的配置文件如下所示: 当我打电话给我的时候 当我打电话时看到了… 因此它正在使用配置文件,但是似乎没有人正在读取它。也许我误解了眼镜蛇和毒蛇的工作方式。有任何想法吗? 问题答案: 要结合和,首先使用Cobra定义标志: 与Viper绑定: 并通过Viper方法获取变量
在Yaml我有: