SpringBoot02配置文件,yaml具体说明

SpringBoot配置文件

1.介绍:

SpringBoot使用一个全局的配置文件,配置文件名是固定的;

  • application.properties
  • application.yml
  • 配置文件的作用:修改SpringBoot自动配置的默认值
    SpringBoot在底层都给我们自动配置好了
    yaml以数据为中心的配置文件比json,xml更适合
    yaml:配置例子
    server:
    port:8080
    xml:
  
    
    8080
    
    

2.写法:

字面量:普通的值(数字,字符串,布尔)
k:(空格)v:字面直接来写;
字符串默认不用加上单引号或者双引号;
“”:双引号;不转义字符
name:“zhangsan\nlisi” 输出:zhangsan 换行lisi
‘’:单引号:转义
name:‘zhangsan\nlisi’ 输出:zhangsan\nlisi
对象.map(属性和值)(键值对):
* k✌️在下一行来写对象的属性和值得关系;注意缩进
friends:
lastname: zhangsan
age:20
行内写法:
friends:{lastname: zhansan,age: 20}
*数组(list\set)
pets:
- cat
- dog
- pig
行内写法:
pets:[cat,dog,pig]

注意:

注意冒号后面要加空格
基本语法k:(空格)v 表示一对键值对(空格必须有)
以空格的缩进表示控制层级关系;只要是左对齐的一列数据,都是同一等级的
属性和值大小写敏感
sever:
port:8081
path:/hello

3.代码演示:

3.1创建一个Dog对象,并set、get以及tostring

public class Dog {
    private String name;
    private int 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 int getAge() {
        return age;
    }

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

3.2创建一个Person对象

属性值包括普通值类型,map类型,list类型,对象

@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    private String lastname;
    private int age;
    private boolean boss;
    private Date birth;
    private Map maps;
    private List 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 int getAge() {
        return age;
    }

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

    public boolean isBoss() {
        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 getMaps() {
        return maps;
    }

    public void setMaps(Map maps) {
        this.maps = maps;
    }

    public List getLists() {
        return lists;
    }

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

    public Dog getDog() {
        return dog;
    }

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

注意:

将配置文件中的每一个属性值,映射到这个组件中
@ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定
prefix = “person”:配置文件中哪个下面的所有属性进行一一对应
只有这个组件是容器中的组件,才能使用容器中提供的ConfigurationProperties功能
加上@Component将Person对象放入到容器中

在yaml中配置属性:

person:
lastname: tangtang
age: 16
boss: true
birth: 1996/02/13
maps: {k1: v1,k2: 12}
lists:
- Xiaoqian
- Xiaohuai
dog:
name: 小狗
age: 3

使用测试类进行测试

在test文件夹下,java下找到测试类
测试类代码:

import com.example.springboot.Bean.Person;
import org.junit.Test;

import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class Springboot01HelloworldQuickApplicationTests {
@Autowired
    Person person;
    @Test
  public void contextLoads() {
        System.out.println(person);
    }

}

运行结果如下:

Person{lastname=‘tangtang’, age=16, boss=true, birth=Tue Feb 13 00:00:00 CST 1996, maps={k1=v1, k2=12}, lists=[Xiaoqian, Xiaohuai], dog=Dog{name=‘小狗’, age=3}}

注意:

关于执行此次测试遇到的几个小问题,我在下一篇简单说一下

你可能感兴趣的:(java,SpringBoot)