如何解决@value获取不到yaml数组的问题
作者:follow_me!
文章介绍了在使用YAML配置文件时,通过@Value注解获取整数和数组列表的配置方法,并提供了两种解决方案:一种适用于非嵌套列表,另一种适用于嵌套列表等复杂配置
一、yaml中的配置
如下:
andawell: permission: allPermissionSign: [["航设公司","军品销售中心"],["民用航空事业部","民航销售中心"],["航设公司","军品销售中心"],["航设公司","军品销售中心"]] orgName: - 航设公司 - 民用航空事业部 - 航设公司 - 航设公司 activeOrg: 1
二、获取
1.整数使用@Value可正常获取:
@Value("${andawell.permission.activeOrg}") int permissionActiveOrg;
- 获取数组/列表使用@Value时,无法正常获取:
@Value("${andawell.permission.allPermissionSign}") List<List<string>> allPermissionSign;
三、解决方案
解决方案1
对于非嵌套列表:如:swl :[a,b,c,d],
需要更改成:swl: a,b,c,d的形式;
@Value(“${swl}”)
或者 @Value("#{'${swl}'.split(',')}")
解决方案2
对于嵌套列表等复杂的配置:如:
allPermissionSign: [["航设公司","军品销售中心"],["民用航空事业部","民航销售中心"], ["航设公司","军品销售中心"],["航设公司","军品销售中心"]]
采用
@ConfigurationProperties(prefix = "andawell.permission")
获取:
@Component @Data @ConfigurationProperties(prefix = "andawell.permission") public class DataSyncConfig { /** * 各个组织中具有所有权限的中心名称,依次为【航设、民航、智能、信息】下的所有权限的部门 */ List<List<String>> allPermissionSign; /** * 各个组织的全称,依次为【航设、民航、智能、信息】 */ List<String> orgName; /** * 生效的组织,【1航设、2民航、3智能、4信息】 */ Integer activeOrg; }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。