一 yaml 语法熟悉
#普通的key-value
name: xuxing
#对象
Stu:
name: xuxing
age: 88
#行内写法
Stu: {name: xuxing,age: 88}
#数组
pets:
- cat
- dog
- pig
pets: [cat,dog,pig]
注意,对空格要求很高。 强大,可以给实体类赋值。
二 通过yaml 给实体类赋值。
2.1 先实现一个不用yaml 配置的初始化属性。
package tech.xuxing.d4.pojo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class Dog {
@Value("旺财")
private String name;
@Value("3")
private Integer age;
public Dog() {
}
测试运行,则
package tech.xuxing.d4;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import tech.xuxing.d4.pojo.Dog;
@SpringBootTest
class D4ApplicationTests {
@Autowired
private Dog dog;
@Test
void contextLoads() {
System.out.println(dog.toString());
}
}
2.2 实现配置yml 初始化dog 属性。
dog:
name: xxx
age: 3
pogo dog 实体类
@ConfigurationProperties(prefix = "dog")
使用方法不变。
2.3 来处复杂点的。类型多一点
package tech.xuxing.d4.pojo;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Component
@ConfigurationProperties(prefix = "person")
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;
public Person() {
}
...
写配置文件 。
person:
name: xuxing
age: 4
happy: false
birth: 2019/11/1
maps: {k1: v1,k2: v2}
lists:
- code
- music
- run
dog:
name: 鱼丸
age: 3
运行,看效果
三 其它特性。
3.1 松散
代码里 firstName 配置里 first-name
3.2 JSR 303数据校验
一 加依赖。
<!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator -->
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.16.Final</version>
</dependency>
二 配校验
@Validated
public class Person {
@Email("邮箱格式不正确")
private String name;