springboot2.0入门(六)-- ymal语法、数据校验
一、基本使用
1、ymal语法是一种更符合人类命名习惯的语法:
# 1. 一个家庭有爸爸、妈妈、孩子。 # 2. 这个家庭有一个名字(family-name)叫做“happy family” # 3. 爸爸有名字(name)和年龄(age)两个属性 # 4. 妈妈有两个别名和年龄,妈妈的年龄和爸爸一样 # 5. 孩子除了名字(name)和年龄(age)两个属性,还有一个friends的集合 # 6. 每个friend有两个属性:hobby(爱好)和性别(sex) family: family-name: happly family dad: name: levi age: 50 #${random.int} 随机数的值是不能传递的 mom: alias: - yilisha - alise age: ${family.dad.age} #妈妈的年龄和爸爸相同,没有则默认为24岁 child: name: happlyboy age: 5 friends: - {hobby: baseball,sex: male} - {hobby: football,sex: famale} #数组的另一种表达方式: # - hobby: baseball # sex: male # - hobby: football # sex: famale
测试该类的读取方式:
单个实体类:
@Data
public class Friend {
private String hobby;
private String name;
}
@Data
public class Mom {
private List<String> alias;
private int age;
}
@Data public class Child { private int age; private List<Friend> friends; }
@Data public class Dad { private String name; private int age; }
Family类
@Data @Component @ConfigurationProperties(prefix = "family") //用于注入对象 public class Family { //@Value("${family.family-name}") 用于注入单个熟悉 private String familyName; private Dad dad; private Mom mom; private Child child; }
两种方式的区别:
创建测试类:
测试类所在包名需要和代码包名一致,否则注入报错:
@RunWith(SpringRunner.class) @SpringBootTest public class TestYml { @Autowired Family family; @Test public void hello(){ System.out.println(family.toString()); } }
运行测试类结果:
2、使用注意事项:
规则1:字符串的单引号与双引号
-
双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思,如:
name: “zhangsan \n lisi”:输出;zhangsan 换行 lisi -
单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据,如:
name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi
规则2:支持松散的语法
family-name = familyName = family_name
随机数占位符
${random.value} ${random.int} ${random.long} ${random.int(10)} ${random.int[1024,65536]}
占位符获取之前配置的值,如果没有可以是用“冒号”指定默认值
格式例如,xxxxx.yyyy是属性层级及名称,如果该属性不存在,冒号后面填写默认值
${xxxxx.yyyy:默认值}
二、数据验证:
在需要校验的属性装配类上加@Validated注解,只有加上才会触发数据校验
@Validated注解的在此处的作用是配合@ConfigurationProperties进行属性校验:
具体使用例子:
@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="身份证格式错误")
@Data
public class Dad {
private String name;
private int age;
}
若有侵权请联系作者,所有内容仅代表个人认知观点,如有错误,欢迎校正;
邮箱:644304139@qq.com
博客地址:https://www.cnblogs.com/liweiweicode/