• SpringBoot: 配置文件用法


    一、外部配置.yml和.properties文件的写法

      1、.yml写法

    #普通key-value
    #注意:对空格的要求十分严格
    #字符串默认不用加上单引号或双引号
    # 加上双引号:不会转义字符串里面的特殊字符 如果有
     输出就会换行
    # 加上单引号:会转义特殊字符 如果有
     输出也是
    
    name: lxy
    
    #对象
    student:
      name: lxy
      age: 24
    
    #行内写法
    teacher: {name: lisi, age: 24}
    
    #数组
    pets:
      - cat
      - dog
      - pig
    
    pet: [cat,dog,pig]
    
    person:
      name: 张三${random.uuid}
      age: 24
      job: true
      map: {k1: v1,k2: v2}
      list:
        - code
        - game
        - girls
      birth: 1995/1/18
      dog:
        name: ${person.name:默认值}_小黑
        age: 4

      2、.properties写法

    #key=value
    name=lxy
    
    student.name=lxy
    student.age=24
    
    dog.color=白色

    二、取值

      1、@Value

    @Component
    public class Dog {
    
        @Value("#{'旺财'}")
        private String name;
    
        @Value("#{11*2}")
        private int age;
    
        @Value("${dog.color}")
        private String color;
    }

      2、@ConfigurationProperties

     1 @Component
     2 //通过.yaml文件来注入属性值
     3 @ConfigurationProperties(prefix = "person")
     4 @Validated //JSR303校验
     5 public class Person {
     6     @Email
     7     private String name;
     8     private int age;
     9     private boolean job;
    10     private Map<String, Object> map;
    11     private List<Object> list;
    12     private Date birth;
    13     private Dog dog;

    三、@Value获取值和@ConfigurationProperties获取值得区别

    相同点:这两个注解都可以通过配置文件yml 或 properties获取到值

    区别

            @ConfigurationProperties      @Value

    功能      批量注入配置文件中的属性      一个个指定

    松散绑定    支持                不支持

    SpEL       不支持                  支持

    JSR303校验    支持                不支持

    复杂类型封装  支持                不支持

    四、配置文件加载路径优先级(由高到低)

      1、-file:./cofig/

      2、-file:./

      3、-classpath:/config/

      4、-classpath:/

      注意:高优先级的文件配置会覆盖低优先级配置。不是说高优先级的配置文件存在,低优先级的配置文件就不起作用。所有的配置会形成互补配置

            我们也可以通过spring.config.location来改变默认配置

  • 相关阅读:
    oracle中rownum和rowid的区别
    Delphi 流
    Delphi 关键字
    Android控件系列之ImageView
    Android控件系列(未完待续)
    Android控件系列之CheckBox
    Android控件系列之ProgressBar&在Android中利用Handler处理多线程
    Android控件系列之Button以及Android监听器
    Android控件系列之Toast
    Android控件系列之TextView
  • 原文地址:https://www.cnblogs.com/lxy-java/p/12986143.html
Copyright © 2020-2023  润新知