0%

Java YAML

配置Demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
family:
family-name: "happy family"
father:
name: zimug
age: ${random.int}
mother:
alias:
- lovely
- ailice
child:
name: ${family.father.name:zimug2}
age: 5
friends:
- hobby: football
sex: male
- hobby: basketball
sex: female

YAML配置绑定变量两种方式

  • 通过@Value注解将family.family-name属性的值绑定到familyName成员变量上面。

    1
    2
    3
    4
    5
    6
    @Data
    @Component
    public class Family {
    @Value("${family.family-name}")
    private String familyName;
    }
  • 使用@ConfigurationProperties获取配置值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//   1. 一个家庭有爸爸、妈妈、孩子。
// 2. 这个家庭有一个名字(family-name)叫做“happy family”
@Data
@Component
@ConfigurationProperties(prefix = "family") //表示配置的整体前缀
public class Family {

private String familyName; //成员变量名称要和yml配置项key一一对应
private Father father;
private Mother mother;
private Child child;
}


// 3. 爸爸有名字(name)和年龄(age)两个属性
@Data
public class Father {
private String name;
private Integer age;
}



// 4. 妈妈有两个别名
@Data
public class Mother {
private String[] alias;
}


//5. 孩子除了名字(name)和年龄(age)两个属性,还有一个friends的集合
@Data
public class Child {
private String name;
private Integer age;
private List<Friend> friends;
}


// 6. 每个friend有两个属性:hobby(爱好)和性别(sex)
@Data
public class Friend {
private String hobby;
private String sex;
}

对配置数值进行校验

  • 在需要校验的属性装配类上加@Validated注解

  • 校验父亲的年龄,必须大于21岁

    1
    2
    3
    4
    5
    public class Father {
    private String name;
    @Min(21)
    private Integer age;
    }
  • 校验familyName,必须不能为空

    1
    2
    @NotEmpty
    private String familyName;
  • 针对Family的属性校验,只需要写一个测试类,将Family类注入就可以。

1
2
3
4
5
6
7
8
9
10
11
@ExtendWith(SpringExtension.class)  //Junit5
@SpringBootTest
public class CustomYamlTest {
@Resource
Family family;

@Test
public void hello(){
System.out.println(family.toString());
}
}
  • 其他参考例子:
  • @size (min=6, max=20, message=”密码长度只能在6-20之间”)
  • @pattern (regexp=”[a-za-z0-9._%+-]+@[a-za-z0-9.-]+.[a-za-z]{2,4}”, message=”请输入正确的邮件格式”)
  • @Length(min = 5, max = 20, message = “用户名长度必须位于5到20之间”)
  • @Email(message = “请输入正确的邮箱”)
  • @NotNull(message = “用户名称不能为空”)
  • @Max(value = 100, message = “年龄不能大于100岁”)
  • @Min(value= 18 ,message= “必须年满18岁!” )
  • @AssertTrue(message = “bln4 must is true”)
  • @AssertFalse(message = “blnf must is falase”)
  • @DecimalMax(value=”100”,message=”decim最大值是100”)
  • @DecimalMin(value=”100”,message=”decim最小值是100”)
  • @NotNull(message = “身份证不能为空”)
  • @Pattern(regexp=”^(\d{18,18}|\d{15,15}|(\d{17,17}[x|X]))$”, message=”身份证格式错误”)

加载额外配置文件(老旧项目文件)

-