SpringBoot 测试 / 如何将环境变量绑定应用到 YAML?

问题描述 投票:0回答:1

我有一个基于 Spring Boot 的应用程序,其中一个类的字段通过

@ConfigurationProperties
填充。其中一个字段是字符串列表:

@ConfigurationProperties(prefix = "company")
public class Company {

    private List<String> employeeNameList = new ArrayList<>();

    // Getters etc. omitted for brevity

}

要为此列表分配值,我可以在 YAML 配置中编写:

company.employeeNameList:
  - Emp1
  - Emp2

可以使用“从环境变量绑定”通过环境变量填充相同的列表,方法如下设置环境变量: company_employeeNameList_0 = Emp1 company_employeeNameList_1 = Emp2

我的问题是:

如何在 YAML 配置中使用环境变量名称? IE。我想要像这样的 YAML 配置(与环境变量中的条目的名称和语法完全相同): company_employeeNameList_0: Emp1 company_employeeNameList_1: Emp2

我想做这个的原因是这样的。我们运行应用程序并通过设置一些环境变量(defs 在一个文件中)来自定义它。现在我想编写一个测试来验证变量是否已正确指定。为此,我想将环境变量定义从文件复制到 spring YAML 配置,并让 SpringBoot 使用该配置。

但是 SpringBoot 似乎仅将绑定应用于环境变量,而不是 YAML 配置。 IE。如果我使用 YAML 配置

company_employeeNameList_0: Emp1 company_employeeNameList_1: Emp2

列表不会填充两个值。

此语法有效:

company.employeeNameList[0]: Emp1 company.employeeNameList[1]: Emp2

但是我想使用与环境变量中使用的名称完全相同的名称,即带下划线且不带括号。

spring-boot configuration spring-boot-test
1个回答
0
投票

export company_employeeNameList=Emp1,Emp2

	
© www.soinside.com 2019 - 2024. All rights reserved.