yaml配置文件
application.properties
- 语法结构:key=value
application.yaml
- 语法结构:key:空格 value
yaml
YAML是"YAML Ain't a Markup Language"(YAML不是一种标记语言)的递归缩写。
基本语法:
# k=v
name: test
#对象
student:
name: test
age: 3
#行内写法
student1: {name: test,age: 3}
#数组
students:
-test1
-test2
-test3
students1: [test1,test2,test3]
注入配置文件
1、导入配置文件的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
2、yaml配置文件
person:
name: test
age: 3
happy: false
birth: 2020/12/22
map: {k: v,k1: v1}
list:
-code
-girl
dog:
name: test
age: 3
3、实体类
package com.sw.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;
/**
* @Author suaxi
* @Date 2020/12/22 10:38
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component //注册Bean
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private int age;
private Boolean happy;
private Date birth;
private Map<String,Object> map;
private List<Object> list;
private Dog dog;
}
@ConfigurationProperties
的作用:
将配置文件中配置的每一个属性的值,映射到这个组件中,参数prefix = "person",将配置文件中person下的所有属性一一对应
补充:通过properties注入属性
@PropertySource(value = "classpath:application.properties")
properties与yaml对比
@ConfigurationProperties | @value | |
---|---|---|
功能 | 批量注入配置文件中的属性 | 需单个一一指定 |
松散绑定 | 是 | 否 |
SPEL表达式 | 否 | 是 |
JSR303校验 | 是 | 否 |
复杂类型封装 | 是 | 否 |
松散绑定:yaml中写的是last-name,实体类中写的是lastName,值依然能注入,yaml中 - 后面的第一个字母默认大写
JSR303校验:JSR是Java Specification Requests的缩写,意思是Java 规范提案。
使用时须在实体类前加上注解 @Validated //JSR303校验
评论 (0)