springboot:你们都是我的翅膀(指properties和yml) ------ 如何使用yml配置文件 springboot系列第二期

写在前面的话

springboot在运行时通过读取核心配置文件的方式解决了spring要配置大量繁杂的配置文件
但是有一个问题
properties的配置文件写法有点复杂 不能直观的看明白配置的内容是什么
yml(也可以写成yaml)文件解决了这个问题
在本文中我们通过一个简单的案例来嗦一下这个是yml怎么使用
关于这三种文件的顺序如下
在加载顺序上:yml>yaml>properties;
在相同属性配置上 yml<yaml<properties,也不难理解,后加载的会覆盖先加载的同属性。

Person类 中使用了Pet类

@Data
@ToString
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    
    
    private String userName;
    private Boolean boss;
    private Date birth;
    private Integer age;
    private Pet pet;
    private String[] interests;
    private List<String> animal;
    private Map<String, Object> score;
    private Set<Double> salarys;
    private Map<String, List<Pet>> allPets;
}

Pet类

@Data
@ToString
public class Pet {
    
    
    private String name;
    private Double weight;
}

yml文件

person:
  #private String userName;
  userName: 'zhangsan \n'
  # 双引号不会转义 但单引号能转义 单引号会将\n作为字符串输出 双引号会将\n作为换行输出
  #private Boolean boss;
  boss: false
  #private Date birth;
  birth: 2019/12/12 20:12:33
  #private Integer age;
  age: 18
#    private Pet pet;
  pet:
    name: tomcat
    weight: 23.4
  #   private String[] interests;
  interests: [篮球,游泳]
#private List<String> animal;
  animal:
    - jerry
    - mario
   # private Map<String, Object> score;
  score:
    english:
      first: 30
      second: 40
      third: 50
    math: [131,140,148]
    chinese: {
    
    first: 128,second: 136}
  # private Set<Double> salarys;
  salarys: [3999,4999.98,5999.99]
#  private Map<String, List<Pet>> allPets;
  allPets:
    sick:
      - {
    
    name: tom}
      - {
    
    name: jerry,weight: 47}
      - name: pig
        weight: 110
    health: [{
    
    name: mario,weight: 47}]

yml 到底应该咋使用

  • yml写key: value的时候一定要主要key: 后面要加一个空格才能使value生效
  • yml是通过缩进来确定包含关系的
  • 如果是普通的对象 如 private Date birth这种的话我们的注入方式是下面这种直接写在后面就行了
birth: 2019/12/12 20:12:33
  • 如果对象里面有变量的话 如private Pet pet;这种 pet里面有name 和weight我们使用的注入方法如下
 pet:
    name: tomcat
    weight: 23.4
  • 如果是数组类型的话(即有[ ]) 如private String[] interests;我们用[ , , , ]的形式
 interests: [篮球,游泳]
  • 如果是集合的话如 List< String > animal 我们的注入方法如下
animal:
    - jerry
    - mario
  • 如果我们的集合有key value关系的话我们也可以按照对象的方式注入如private Map<String, Object> score;
  score:
    english:
      first: 30
      second: 40
      third: 50
    math: [131,140,148]
    chinese: {
    
    first: 128,second: 136}
  • 其实如果是集合的话也可以用 [ , , , ]这样注入的 比如private Set salarys
salarys: [3999,4999.98,5999.99]
  • 如果集合里面带集合咋办? 比如 Map<String, List> allPets
  allPets:
    sick:
      - {
    
    name: tom}
      - {
    
    name: jerry,weight: 47}
      - name: pig
        weight: 110
    health: [{
    
    name: mario,weight: 47}]

总结

由上可知 yml 有一下几种

  • 对象关系 用 key: value 如果一个对象里面有好几个属性的话
    key:
    key1: value1
    key2: value2
    当然这也可以写成一行 key: {key1: value1,key2: value2 }
  • 数组、list、set 用 -来表示数组中的一个元素就像这样
    在这里插入图片描述
    当然数组的也可以写到一行里面
pets: [dog,pig,cat]
  • 如果有很多的嵌套关系的话可以通过缩进来解决
    在这里插入图片描述
    就跟这种一样

猜你喜欢

转载自blog.csdn.net/qq_47431361/article/details/123637410