SpringBoot测试:如何实现环境变量到YAML配置的绑定?
SpringBoot测试:如何实现环境变量到YAML配置的绑定?
嘿,我来帮你把这个环境变量绑定的事儿说清楚,刚好你提到的这个列表字段的场景我之前也折腾过~
首先先确认下你的配置类写法,应该是这样的对吧:
@ConfigurationProperties(prefix = "company") public class Company { private List<String> employeeNameList = new ArrayList<>(); // Getters等方法这里就不啰嗦写了 }
YAML里的配置方式你已经门儿清了,就是:
company.employeeNameList: - Emp1 - Emp2
接下来重点说环境变量的绑定,Spring Boot的宽松绑定规则对列表类型提供了两种实用的写法:
第一种:索引式绑定
就是你提到的那种,用下划线分隔前缀、字段名和元素索引,环境变量名写成这样:
company_employeeNameList_0=Emp1company_employeeNameList_1=Emp2
Spring Boot会自动把对应索引的值映射到列表的对应位置,这种方式适合需要固定元素顺序的场景。
第二种:逗号分隔式绑定
如果觉得写索引太麻烦,尤其是列表元素多的时候,还可以直接用逗号分隔所有元素,只需要设置一个环境变量就行:company_employeeNameList=Emp1,Emp2
Spring Boot会自动把这个逗号分隔的字符串拆分成列表里的元素,是不是省心多了?
最后给你提个小醒:要确保你的Company配置类能被Spring Boot识别到哦,要么给类加上@Configuration注解,要么在启动类上加上@EnableConfigurationProperties(Company.class),不然绑定会不生效哒。
备注:内容来源于stack exchange,提问作者fml2
相关产品推荐
相关产品推荐

