我有一个基于 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
但是我想使用与环境变量中使用的名称完全相同的名称,即带下划线且不带括号。
export company_employeeNameList=Emp1,Emp2