springboot-yaml配置注入

888 阅读1分钟

yaml配置注入

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

  1. application.properties 语法结构 :key=value
  2. application.yaml 语法结构 :key:空格 value

yaml语法

# 属性
name: xiaomi

# 对象
Teacher:
  name: Teacher Wang
  age: 26

# 对象的行内写法
Student: {name: Student Wang,age: 26}

# 数组
animals:
  - cat
  - pig
  - dog

# 数组的行内写法
pets:[cat,dog,pig]

注意:yaml的语法要求严格!

  1. 空格不能省略
  2. 以缩进来控制层级关系,只要是左边对齐的一列数据都是同一个层级的。
  3. 属性和值的大小写都是十分敏感的。

yaml实现注入配置文件

  1. @ConfigurationProperties(prefix = "people")实现实体类和application.yaml联系起来。
  2. 编写@ConfigurationProperties(prefix = "people")会出现爆红,直接点击:上面的链接去官网,把提示给你的依赖放在pom.xml就可以解决这个爆红了,解决后要重启IDEA

Cat.java

package com.example.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Component
public class Cat {
    private String name;
    private Integer age;
}

People.java

package com.example.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.List;
import java.util.Map;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Component
@ConfigurationProperties(prefix = "people")
public class People {
    private String name;
    private Integer age;
    private List<Object> hobby;
    private Cat cat;
    private Map<String,Object> maps;
    private boolean happy;
    private Date date;

}

application.yaml

people:
  name: 小米
  age: 23
  hobby:
    - music
    - code
    - write
  cat:
    name: 旺财
    age: 3
  maps: {m1: 1,m2: 2}
  happy: true
  date: 2021/4/5

测试类

package com.example;

import com.example.pojo.People;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class Springboot02ConfigApplicationTests {
    
    @Autowired//将people注入
    People people;

    @Test
    void contextLoads() {
        System.out.println(people);
    }

}

运行结果:

People(name=小米, age=23, hobby=[music, code, write], cat=Cat(name=旺财, age=3), maps={m1=1, m2=2}, happy=true, date=Mon Apr 05 00:00:00 CST 2021)