java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > @value获取不到yaml数组

如何解决@value获取不到yaml数组的问题

作者:follow_me!

文章介绍了在使用YAML配置文件时,通过@Value注解获取整数和数组列表的配置方法,并提供了两种解决方案:一种适用于非嵌套列表,另一种适用于嵌套列表等复杂配置

一、yaml中的配置

如下:

andawell:
  permission:
    allPermissionSign: [["航设公司","军品销售中心"],["民用航空事业部","民航销售中心"],["航设公司","军品销售中心"],["航设公司","军品销售中心"]]
    orgName: 
     - 航设公司
     - 民用航空事业部
     - 航设公司
     - 航设公司
    activeOrg: 1

二、获取

1.整数使用@Value可正常获取:

    @Value("${andawell.permission.activeOrg}")
    int permissionActiveOrg;
  1. 获取数组/列表使用@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;
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文