小白的SpringBoot系列学习日记
这个链接记录我整个SpringBoot的学习过程(实时更新):https://blog.csdn.net/a_106/article/details/106721918
yml与properties比较篇
-
yml支持多文档格式,一个文件就可以写所有的配置,不用切换文件。
什么意思呢,看下面这个图只要在文档中插入---即可开启一个新文档,如图,我键入了3个---,所以文档下放显示我这一个里面有四个文件对象。

-
yml支持复杂类型的封装
什么意思呢,就是yml支持对象的赋值与注入,这就是我刚刚写的那个student对象,至于注入,看下面这个例子:
我写了一个实体类Student,定义了一些属性,在yml中写了一个student对象,并赋值。我用@ConfigurationProperties(prefix = "student")这个注解,将两个文件关联起来,这和上次我们说的找yml中能写什么对象是一样的。

-
yml支持松散绑定
松散绑定是什么意思呢,还是刚刚的例子,我们刚刚yml与Student中的属性是完全相同的,那我们测试一下,如果名字不相同会不会绑定成功。
经过测试我们发现,-、 _ 、英文大写对于值得注入没有任何影响,但是如果字母不相同,注入就不成功 -
yml支持JSR303校验
又是一个新词哈,JSR303校验是什么呢?简单来说就是判断你注入到bean中的属性值是否符合规范。JSR303给我们提供了一些验证的注释,在使用时先在类名上添加注释 @Validated ,意思是开启改类的数据校验,由于SpringBoot2.3.0中将验证启动器从启动文件中拿了出来,所以我们要自己导入验证的启动器依赖到pom.xml
文件中,<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency>然后直接将相关的注释写在你要进行验证的属性上即可完成yml的数据注入,例如:
//判断一个值是不是email格式的 //message 是指输入的消息,不是非要修改,不修改消息的值,不需要加括号 @Email 即可 , // 一个属性可配置多个条件注释 // 例如下面这个配置的意思为 email的值 必填且必须为邮件格式 @Email(message = "这不是一个正确的email地址") @NotNull(message = "此处不能为空") private String email; //接下来说一些常用的注释条件 @Size(min = 1, max = 10 ) //判断长度是否在这个范围 可验证数组、集合、map、String @Length(min = 1, max = 10) //判断字符串的长度是否在这个范围 @Max(value = 1,message = "输入值过高") //输入值最大为1 @Min(value = 1,message = "输入值过低") //输入值最小为1
接下来说一下properties
- properties我们就很熟了,首先他是不支持多文档格式的,我们要想实现切换端口号改变环境就要配置多个properties
- 不支持复杂类型的封装与注入,只能单个注入
- 不支持松散绑定
- 不支持JSR303验证
- 支持SpEL表达式
在加载顺序上,yml文件先被加载,但如果你同时配置了yml与properties文件,properties后加载会覆盖掉yml中的配置。
本文深入对比分析了SpringBoot中YAML与Properties配置文件的特点与应用,包括多文档格式支持、复杂类型封装、松散绑定及JSR303校验等特性。

195

被折叠的 条评论
为什么被折叠?



