SpringBoot配置文件之yml的基本语法与案例

SpringBoot配置文件之yml的基本语法与案例

一.yml语法

yml比json,xml更加适合配置文件,以数据为中心,减少了没必要的标签。
1.yml的基本格式:
key: value
例如: name: lisi(**注意:**key:与value之间的空格是必须要有的)
2.以空格的缩进来控制层级关系,只要是左对齐的一列数据都属于同一层级。例如

person:
 name: lisi
 age: 20

以上例子中name和age属于同一个层级,都是person的属性
3.属性和值对大小写都敏感。

二、不同属性类型值的写法

1.字面量(数字、字符串、bool等)
直接就是key: value,其中字符串若加上单引号则不会转义特殊字符,若加上双引号则会转义特殊字符,不加引号也不会转义。
2.对象、map
a.分层写法:
例如:

person:
  name: zhangsan
  age: 20

b.行内写法
例如:

map: {key1: v1,key2: v2}

3.数组(list,set)
a.分层写法
使用-表示一个元素
例如:

hobby:
    - play
    - listen

注意:-与值之间也必须有空格
b.行内写法

hobby: [play,listen]

三、案例:SpringBoot如何使用yml配置文件给对象赋值

1.在pom文件中添加配置处理的依赖

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-configuration-processor</artifactId>
     <optional>true</optional>
</dependency>

2.创建Person类和Dog类
在Person类中加上注解@Component将Person交给容器,再加上注解@ConfigurationProperties(prefix = “person”),这样SpringBoot就会去配置文件中找到以person为开头之后的属性值赋给Person中的属性。其中,Person和Dog类的代码如下:

Person.java

package com.ldx.springbootconfigyml.domain;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.Arrays;
import java.util.Date;
import java.util.Map;

@Component
@ConfigurationProperties(prefix = "person")
public class Person {

    private String name;
    private  Integer age;
    private Date birth;
    private String[] hobby;
    private Map<String,Object> map;
    private Dog dog;

    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;
    }

    public Date getBirth() {
        return birth;
    }

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

    public String[] getHobby() {
        return hobby;
    }

    public void setHobby(String[] hobby) {
        this.hobby = hobby;
    }

    public Map<String, Object> getMap() {
        return map;
    }

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

    public Dog getDog() {
        return dog;
    }

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

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", birth=" + birth +
                ", hobby=" + Arrays.toString(hobby) +
                ", map=" + map +
                ", dog=" + dog +
                '}';
    }
}

Dog.java

package com.ldx.springbootconfigyml.domain;

public class Dog {
    private String name;
    private Integer 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;
    }

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

3.编写application.yml配置文件

server:
  port: 8081

person:
  name: zhangsan
  age: 20
  birth: 2017/12/12
  hobby: [play,listen]
  map: {key1: v1,key2: v2}
  dog:
    name: xiaogou
    age: 2

4.编写测试单元

package com.ldx.springbootconfigyml;

import com.ldx.springbootconfigyml.domain.Person;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class SpringbootConfigYmlApplicationTests {

    @Autowired
    Person p;
    @Test
    void contextLoads() {
        System.out.println(p.toString());
    }

}

5.结果
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值