• Spring Boot 优雅配置yml配置文件定义集合、数组和Map


    一、@value 获取配置文件

    在平时的yml配置文件中,我们经常使用到配置基本数据类型的字符串,比如配置日志文件的写法如下:

    # 配置日志输出级别
    logging:
      # 指定logback配置文件的位置 
      config: classpath:logback-spring.xml
      # 文件日志要输出的路径
      path: E:/logs/springboot_server
      # 日志的输出级别
      level:
        root: info
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    获取属性值的话可以通过@value 注解来实现,如下:

    @Value("${logging.path}")
    private String path;    // 获取日志文件的输出路径
    
    • 1
    • 2

    二、 List集合获取配置文件

    第一种方法

    # 拦截器路径拦截或者不拦截配置
    interceptorconfig:
      path:
        #该路径下任何类型请求均拦截
        include:
          - /api/v1/token/api_token
          - /api/v1/yibaotong/save
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    第二种方法

    # 拦截器路径拦截或者不拦截配置
    interceptorconfig:
      path:
        #该路径下任何类型请求均拦截
        include: [/api/v1/token/api_token,/api/v1/yibaotong/save]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    总结

    这里需要注意的是,定义List集合不能用@value 注解来获取List集合的所有值,需要定义一个配置类bean,然后使用 @ConfigurationProperties 注解来获取list集合值,做法如下:

    @Data
    @Component
    @ConfigurationProperties(prefix = "interceptorconfig.path") // 配置文件的前缀
    public class InterceptorPathBean
    {
        /*
         * 需要拦截的路径
         */
        private List<String> include;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    三、定义对象list集合获取配置文件

    单个对象List

    首先创建一个user对象如下:

    @Data
    public class User implements Serializable
    {  
            
        private static final long serialVersionUID = 1L;
        
        private String appId;
        
        private String password;
     
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    然后yml配置文件的写法如下:

    jwt:
      userlist:
        - appId: YiBaoTong
          password: 123456
        - appId: ZhiKe
          password: 123456
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    定义配置bean使用@ConfigurationProperties注解获取对象集合值:

    @Data
    @Component
    @ConfigurationProperties(prefix = "jwt") // 配置 文件的前缀
    public class JwtConfigBean
    {
        /**
         * 用户列表
         */
        private List<User> userlist;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    List对象中包含List

    定义配置bean使用@ConfigurationProperties注解获取对象集合值:

    @Data
    @Component
    @ConfigurationProperties(prefix = "jwt") // 配置 文件的前缀
    public class JwtConfigBean {
        /**
         * 用户列表
         */
        private List<UserTest> userList;
    
        @Data
        private static class UserTest {
            private String appId;
            private List<String> passwordList;
        }
    
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    yml 文件配置

    jwt:
      userList:
        - appId: '121212'
          passwordList: '活动时间流程节点-PromoTimeValidNode,活动时间流程节点-PromoTimeValidNode2'
        - appId: 'werw3313'
          passwordList: '活动时间流程节点-PromoTimeValidNode,活动时间流程节点-PromoTimeValidNode2'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    四、数组获取配置文件

    yaml 格式如下:

    interceptorconfig:
      path:
        includes: /api/v1,/api/v2  #注意要用逗号分隔开
    
    • 1
    • 2
    • 3

    可以通过@value注解获取数组值,如下:

    @Value("${interceptorconfig.path.includes}")
    private String[] includes;
    
    • 1
    • 2

    也可以通过创建配置类bean,使用@ConfigurationProperties注解获取,如下:

    @Data
    @Component
    @ConfigurationProperties(prefix = "interceptorconfig.path") // 配置 文件的前缀
    public class InterceptorPathBean
    {  
        private String[] includes;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    五、定义Map集合配置文件

    yaml 格式如下:

    interceptorconfig:
      path:
        maps: {name: 小明,age: 24}
    
    • 1
    • 2
    • 3

    或者写成:

    interceptorconfig:
      path:
        maps:
          name: 小明
          age: 24
    
    • 1
    • 2
    • 3
    • 4
    • 5

    通过创建配置类bean,使用@ConfigurationProperties注解获取map值,如下:

    @Data
    @Component
    @ConfigurationProperties(prefix = "interceptorconfig.path") // 配置 文件的前缀
    public class InterceptorPathBean
    {
        private Map<String , String> maps;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    以上就是Spring Boot yml配置文件定义基本数据类型和引用数据类型的方式;

    六、参考链接

    spring boot 的yml配置文件定义list集合、数组和map以及使用中出现的错误_yml配置map类型的数据注入失败-CSDN博客

  • 相关阅读:
    如何修改NuGet默认全局包文件夹的位置?
    2022 年杭电多校第十场补题记录
    vue3项目登录成功后根据角色菜单来跳转指定页面(无首页)
    NIFI同步API接口数据
    VB.net实战(VSTO):Excel插件设计Ribbon界面
    SpringBoot整合DataWay配置前端查询
    工业智能化转型升级难?华为云这三招,加速商业变现
    线框图软件:Balsamiq Wireframes mac中文介绍
    Speedoffice(word)中如何添加批注内容
    TypeScript基础学习
  • 原文地址:https://blog.csdn.net/zouliping123456/article/details/134080774