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;
- }
springboot2.0入门(六)-- ymal语法、数据校验的更多相关文章
- 《Java从入门到放弃》入门篇:springMVC数据校验
昨天我们扯完了数据传递,今天我们来聊聊数据校验的问题.来,跟着我一起读:计一噢叫,一按艳. 在springMVC中校验数据也非常简单,spring3.0拥有自己独立的数据校验框架,同时支持JSR303 ...
- Springboot2.0入门介绍
Springboot目前已经得到了很广泛的应用,why这么牛逼? Springboot让你更容易上手,简单快捷的构建Spring的应用 Spring Boot让我们的Spring应用变的更轻量化.比如 ...
- springboot2.0入门(一)----springboot 简介
一.springboot解决了什么? 避免了繁杂的xml配置,框架自动帮我们完成了相关的配置,当我们需要进行相关插件集成的时候,只需要将相关的starter通过相关的maven依赖引进,并可以进行相关 ...
- springboot2.0入门(五)--swagger2接口API构建
一.特点 代码变,文档变.只需要少量的注解,Swagger 就可以根据代码自动生成 API 文档,很好的保证了文档的时效性. 跨语言性,支持 40 多种语言. Swagger UI 呈现出来的是一份可 ...
- springboot2.0入门(四)----mock模拟测试+单元测试
一.本节主要记录模拟测试.单元测试: 二.mock 测试 1.1什么是Mock? 在面向对象程序设计中,模拟对象(英语:mock object,也译作模仿对象)是以可控的方式模拟真实对象行为的假的对象 ...
- springboot2.0入门(九)-- springboot使用mybatis-generator自动代码生成
一.配置文件引入 插件引入,引入 <plugin> <groupId>org.mybatis.generator</groupId> <artifactId& ...
- springboot2.0入门(八)-- profile启动文件配置
一.不同环境使用不同配置文件 将application.yml文件拷贝三份,在文件末尾分别对应开发/生产/测试,dev/prod/test/文件夹,其中application.yml 中默认激活开发环 ...
- springboot2.0入门(七)-- 自定义配置文件+xml配置文件引入
一.加载自定义配置文件: 1.新建一个family.yam文件,将上application.yml对象复制进入family family: family-name: dad: name: levi a ...
- springboot2.0入门(三)----定义编程风格+jackjson使用+postMan测试
一.RESTFul风格API 1.优点: )看Url就知道要什么资源 )看http method就知道针对资源干什么 )看http status code就知道结果如何 HTTP方法体现对资源的操作: ...
随机推荐
- 【51nod】1634 刚体图
[51nod]1634 刚体图 给一个左边n个点右边m个点二分图求合法的连通图个数,每条边选了之后会带来价值乘2的贡献 类似城市规划那道题的计数 设\(g[i][j]\)为左边\(i\)个点,右边\( ...
- BZOJ4516 SDOI2016生成魔咒(后缀自动机)
本质不同子串数量等于所有点的len-parent树上父亲的len的和.可以直接维护. #include<iostream> #include<cstdio> #include& ...
- mysql 2 修改表
1 修改表名 rename table aaa to bbb; 或者 rename table aaa to bbb; 2 修改字段的数据类型 alter table person modify na ...
- 编程模型&编程思想
编程模型 1.面向对象编程OOP 2.面向切面编程AOP Java静态接口,Java动态代理,字节码提升. 面向切面的两个方面: 拦截判断:方法,注解,参数,异常 拦截执行:前置,后置,返回,异常 3 ...
- 关于element ui滚动条使用
element ui 自带的滚动条使用 在容器的直接外层添加 (需要展现滚动条的那一级) <el-scrollbar style="height:100%"></ ...
- js入门第一篇
简介:JavaScript 运行在客户端(浏览器)是一种客户端语言,javascript的引擎被称为JavaScript引擎,为浏览器的一部分广泛用于客户端的脚本语言 应用场景:网页特效, 服务端开发 ...
- js对象转数组
1.Array.from() 方法,用于数组的浅拷贝.就是将一个类数组对象或者可遍历对象转换成一个真正的数组.eg: let obj = { 0: ‘nihao‘, 1: ‘haha‘, 2: ‘ga ...
- numpy相关使用
相关学习资料 : numpy中文网 https://www.numpy.org.cn/ 1 numpy索引区间为左闭右开,第一个索引能取到,第二个索引取不到 索引内可加步长 如 import nump ...
- 【转载】salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载
salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载 目前国内已经有很多公司做salesforce,但是国内相关的资料确是少之又少.上个月末跳槽去了新 ...
- with语句和空语句
with语句能够为一组语句创建缺省的对象,在一组语句中,任何不指定对象的属性引用都将被认为是缺省对象. 语法如下: with(object){ statements; } <body> & ...