SpringBoot使用一个全局的配置文件 , 配置文件名称是固定的
第一种、application.properties
第二种、application.yml
配置文件的作用:修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们自动配置好了;
YAML是 "YAML Ain‘t a Markup Language" (YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)
这种语言以数据作为中心,而不是以标记语言为重点!
以前的配置文件,大多数都是使用xml来配置;比如一个简单的端口配置,我们来对比下yaml和xml
传统xml配置:
<server>
<port>8080<port>
</server>
yaml配置:
server:
prot: 8080
说明:语法要求严格!
字面量直接写在后面就可以 , 字符串默认不用加上双引号或者单引号;
key: value
注意:
“ ” 双引号,不会转义字符串里面的特殊字符 , 特殊字符会作为本身想表示的意思;
比如 :name: "study \n yaml" 输出 :sutdy 换行 yaml
‘‘ 单引号,会转义特殊字符 , 特殊字符最终会变成和普通字符一样输出
比如 :name: ‘study \n yaml’ 输出 :study \n yaml
#key: value
#普通的key: value
name: studyYAML
#对象
student:
name: zhangsan
age: 3
#行内写法
Student: {name: zhangsan,age: 3}
#数组
pets:
- cat
- dog
- pig
#行内写法
Pets: {cat,dog,pig}
name=studyYAML
student.name=zhangsan
student.age=3
1、Dog:
package com.study.pojo;
import org.springframework.stereotype.Component;
@Component//注册bean到容器中
public class Dog {
private String name;
private Integer age;
//有参无参构造、get、set方法、toString()方法
}
2、Person:
package com.study.pojo;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Component//注册bean到容器中
public class Person {
private String name;
private Integer age;
private Boolean happy;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
//有参无参构造、get、set方法、toString()方法
}
@Component //注册bean
public class Dog {
@Value("旺财")
private String name;
@Value("18")
private Integer age;
}
@SpringBootTest
class Springboot02ConfigApplicationTests {
@Autowired //将Dog自动注入进来
private Dog dog;
@Test
void contextLoads() {
System.out.println(dog);
}
}
运行结果输出成功!

这是原生的方式,特别麻烦,下面我们用YAML方式注入(先删除Dog里面的@value注解)
person: #对应实体类的名字
name: 张三
age: 19
#Boolean
happy: true
#Date
birth: 2021/6/28
#集合
maps: {key1: value1, key2: value2}
#数组
lists:
- code
- music
- girl
#对象
dog:
name: 旺财
age: 3

可以在pom.xml中添加以下配置文件依赖即可解决
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
@SpringBootTest
class Springboot02ConfigApplicationTests {
@Autowired //将Person自动注入进来
private Person person;
@Test
void contextLoads() {
System.out.println(person);
}
}

person:
name: 张三${random.uuid} #赋值随机uuid
age: ${random.int} #赋值随机整形
#Boolean
happy: true
#Date
birth: 2021/6/28
#集合
maps: {key1: value1, key2: value2}
#数组
lists:
- code
- music
- girl
#对象
dog:
name: ${person.hello:hello}_旺财 #假设person。hello不存在,赋值hello给旺财,假设存在,赋值已有的值给旺财
age: 3
输出结果

原文:https://www.cnblogs.com/luoxiao1104/p/14943406.html