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来改变默认配置

原文地址:https://www.cnblogs.com/lxy-java/p/12986143.html