【尚硅谷Spring Boot】配置9 ~ 11:yaml语言

09、yaml简介

1、配置文件

配置文件放在src/main/resources目录或者类路径/config下。
上节课学到的application.properties就是配置文件的一种。
SpringBoot使用一个全局的配置文件,配置文件名是固定的(application),有两种类型:

  • application.properties
  • application.yml

配置文件的作用

  • 修改Spring Boot自动配置的默认值;
    • 一般情况下Spring Boot在底层都给我们自动配置好,想修改就要修改配置文件;

2、yml文件

yml是YAML语言的文件。
YAML(YAML Ain’t Markup Language)

  • http://www.yaml.org/参考语法规范
  • 全局配置文件的可以对一些默认配置值进行修改

标记语言:

  • 以前的配置文件:大多都使用的是*.xml文件;
  • YAML:以数据为中心,比json、xml等更适合做配置文件;

范例:yml配置

server:
  port: 8081

范例:xml配置

<server>
	<port>8081</port>
</server>

10、yaml语法

1、基本语法

key: value

  • 表示一对键值对(冒号后空格必须有);

空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的

server:
    port: 8081
    path: /hello

属性和值也是大小写敏感;

2、值的写法

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

key: value:字面直接来写;

  • 字符串默认不用加上单引号或者双引号;
  • 双引号(" "):正常执行转义字符
    • name: “zhangsan \n lisi”
    • 输出:zhangsan 换行 lisi
  • 单引号(’ '):不执行特殊字符,特殊字符最终只是一个普通的字符串数据
    • name: ‘zhangsan \n lisi’
    • 输出:zhangsan \n lisi

对象、Map(属性和值)(键值对):

key: value:在下一行来写对象的属性和值的关系,注意缩进。

friends:
		lastName: zhangsan
		age: 20

行内写法:

friends: {lastName: zhangsan,age: 18}

数组(List、Set):

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

pets:
 - cat
 - dog
 - pig

行内写法

pets: [cat,dog,pig]

11、yaml配置文件值获取

观察下面这个项目:

1、编写Person类

/**
 * @ConfigurationProperties 作用:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;
 * prefix = "person":配置文件中哪个下面的所有属性进行一一映射。
 * 
 * @ConfigurationProperties(prefix = "person")默认从全局配置文件(application文件)中获取值;
 * 就是说将配置文件中配置的每一个属性的值,映射到这个组件中。
 * 如果工程中同时存在application.properties文件和 application.yml文件,yml文件会先加载
 * 而后加载的properties文件会覆盖yml文件。所以建议工程中,只使用其中一种类型的文件即可
 *
 * @Componet 作用:
 * 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;
 */
@Component
@ConfigurationProperties(prefix = "person")
public class Person {

    private String lastName;
    private Integer age;
    private Boolean boss;
    private Date birth;

    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;

    @Override
    public String toString() {
        return "Person{" +
                "lastName='" + lastName + '\'' +
                ", age=" + age +
                ", boss=" + boss +
                ", birth=" + birth +
                ", maps=" + maps +
                ", lists=" + lists +
                ", dog=" + dog +
                '}';
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public Integer getAge() {
        return age;
    }

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

    public Boolean getBoss() {
        return boss;
    }

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

    public Date getBirth() {
        return birth;
    }

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

    public Map<String, Object> getMaps() {
        return maps;
    }

    public void setMaps(Map<String, Object> maps) {
        this.maps = maps;
    }

    public List<Object> getLists() {
        return lists;
    }

    public void setLists(List<Object> lists) {
        this.lists = lists;
    }

    public Dog getDog() {
        return dog;
    }

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

2、编写Dog类

public class Dog {
    private String name;
    private Integer age;

    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

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

3、编写yml配置文件application.yml

注意文件名只能是application.yml

person:
  lastName: hello
  age: 18
  boss: false
  birth: 2017/12/12
  maps: {k1: v1,k2: 12}
  lists:
    - zhangsan
    - lisi
  dog:
    name: 小狗
    age: 12

4、导入依赖(非必须)

导入如下依赖:

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

该依赖的功能是:提示配置文件中需要配置的各种信息。

5、编写测试类ConfigApplicationTests

/**
 * @SpringBootTest 代表这是SpringBoot单元测试:
 * 可以在测试期间很方便的类似编码一样进行自动注入等容器的功能
 *
 * @RunWith(SpringRunner.class) 代表:
 * 让测试在Spring驱动器(Spring容器环境)中运行,而不是junit
 */
@RunWith(SpringRunner.class)
@SpringBootTest
class ConfigApplicationTests {
    @Autowired
    Person person;  // 注入Person类

    @Test
    public void contextLoads() {
        System.out.println(person);  // 输出
    }
}

运行该测试类:
在这里插入图片描述
可以看到配置文件中的设置被读取到了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值