首页 > 技术文章 > application.yml

coderD 2020-09-21 18:36 原文

application.yml


YAML是一种以数据为中心的配置文件,通常以.yml为后缀。

1.语法

  • 大小写敏感

  • 使用缩进表示层级关系

  • server: port: 8080 path: /autumn

  • 缩进时不允许使用Tab键,只能使用空格

  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

  • key:(空格)value -> 键和值中间用冒号空格

YAML支持的三种数据结构

  • 对象:键值对的集合
  • 数组:一组按次序排列的值
  • 字面量:单个的、不可再分的值

2.值的写法

字面量:普通的值(数字、字符串、布尔)

字符串默认不用加引号,

如果加上 “” 双引号,双引号内的特殊字符将作为本身的意思展示

如果加上 ‘’ 单引号,单引号内的特殊字符将会被转义

对象。MAP(属性和值)(键值对):

k: V:在下一行来写对象的属性和值的关系;注意缩进

   对象还是k:v的方式

`person:
    perName: zhangsan
    age: 18`

行内写法:

person: {perName: zhangsan,age: 18}

数组(List、Set):

用- 值表示数组中的一个元素

`person:
    - zhangsan
    - lisi
    - wangwu`

行内写法

person: [zhangsan,lisi,wangwu]


3.配置文件的注入

配置文件

`person:
    perName: zhangsan
    age: 18
    boss: null
    birth: 2018/9/9
    dog:
        name: 小狗
        agg: 2

`

JavaBean:

`import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;

import java.util.Date;

@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    private String perName;
    private Integer age;
    private String boss;
    private Date birth;

    private Dog dog;

    public String getPerName() {
        return perName;
    }

    public void setPerName(String perName) {
        this.perName = perName;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getBoss() {
        return boss;
    }

    public void setBoss(String boss) {
        this.boss = boss;
    }

    public Date getBirth() {
        return birth;
    }

    public void setBirth(Date birth) {
        this.birth = birth;
    }

    public Dog getDog() {
        return dog;
    }

    public void setDog(Dog dog) {
        this.dog = dog;
    }

    @Override
    public String toString() {
        return "person{" +
            "perName='" + perName + '\'' +
            ", age=" + age +
            ", boss='" + boss + '\'' +
            ", birth=" + birth +
            ", dog=" + dog +
            '}';
    }
}

`

导入配置文件处理器,编写的配置就会有提示了

`<!--导入配置文件处理器,配置文件进行绑定就会有提示-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>`

@Value和@ConfigurationProperties为属性注入值对比

推荐阅读