如何解决@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;
}总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
