zoukankan      html  css  js  c++  java
  • springboot 中yml配置

    springboot 中各种配置项纪录

    1. @Value

    最早获取配置文件中的配置的时候,使用的就是这个注解,SpEL表达式语言。

    // 使用起来很简单
    @Value("${config.demo.value:defaultValue}")
      private String simpleValue;
      
    

    2. @ConfigurationProperties

    通常我们配置的时候,不仅仅是一个单独字段,可能是一组配置,用来组成一个对象。这个时候spring为我们提供了这个注解。

    简单的对象,在yml里也可以很简单的写出来。直接把每一个字段写出即可。

    而对复杂对象,如:list、map等的,就需要查一下资料了,这里简单记录一下写法,直接看代码。

    # 配置示例
    config:
      demo:
        value: testValue
    
        simpleConfig:
          config: testConfig
    
        str1: abc,cde
        str2:
          - abc
          - cde
    
        configMap:
          key1: value1
          海贼王: 路飞
    
        simpleConfigs:
          - config: 罗宾
            count: 1
          - config: 乌索普
            count: 1
          - config: 索隆
            count: 1
    
        configObjMap:
          key1:
            config: value1
          key2:
            config: value2
    

    pojo 对象定义如下:

    @Data
    @ConfigurationProperties(prefix = "config.demo")
    @Configuration
    public class ConfigDemo {
      @Value("${config.demo.value:defaultValue}")
      private String simpleValue;
    
      /**===========简单对象===========*/
      /**
       * 对象
       */
      private SimpleConfig simpleConfig;
      /**
       * 字符串数组1
       */
      private List<String> str1;
      /**
       * 字符串数组1
       */
      private List<String> str2;
      /**
       * 键值对
       */
      private Map<String, String> configMap;
    
      /**
       * ===========多个复杂对象==========
       */
      /**
      	* 对象集合
      	*/
      private List<SimpleConfig> simpleConfigs;
      /**
      * 对象作为map值
      */
      private Map<String, SimpleConfig> configObjMap;
    
    
      @Data
      public static class SimpleConfig {  // 注意:这里需要内部类是public的,要不然注入的时候会出错。
        private String config;
        private int count;
      }
    }
    

    以上就是各种情况的书写。其实也不难,list 就增加 - 来作为单个对象标识,而map就直接写key即可。

    而spring在存储properties的时候是怎么处理的呢,我们可以断点一下 PropertyPlaceholderHelper,在这里我们可以看到存储各种配置的source如下图:

    底层都是通过一个ResourceReloadingMap来存储的,那么存储list的时候,是什么结构呢,如下:

    // 存储的时候是这样的:
    
    simpleConfigs[0].config=configValue
    simpleConfigs[0].count=countValue
    ...
    

    所以最终都是通过键值对的方式,只是对应的格式,spring可以解析成对应的样子而已。

  • 相关阅读:
    php远程图片抓取存放到本地路径并生成缩略图
    Linux下cron的使用
    centos6.3编译安装Apache2.4.3+PHP5.4.8+Mysql5.5.8
    CentOS 6.3 安装以及配置Apache php mysql
    用avalon和jquery做基础网页导航
    javascrip基本概念(三)
    grunt学习笔记(一)
    前端项目目录管理-部署结构
    javascript基本概念(二)
    avalon学习笔记ui篇-如何将avalon默认的amd模型禁止,以及用require重写。
  • 原文地址:https://www.cnblogs.com/paxing/p/13232235.html
Copyright © 2011-2022 走看看