SpringBoot系列学习日记4-yml与properties比较篇

本文深入对比分析了SpringBoot中YAML与Properties配置文件的特点与应用,包括多文档格式支持、复杂类型封装、松散绑定及JSR303校验等特性。

小白的SpringBoot系列学习日记

这个链接记录我整个SpringBoot的学习过程(实时更新):https://blog.csdn.net/a_106/article/details/106721918

yml与properties比较篇

  1. yml支持多文档格式,一个文件就可以写所有的配置,不用切换文件。
    什么意思呢,看下面这个图只要在文档中插入 --- 即可开启一个新文档,如图,我键入了3个 --- ,所以文档下放显示我这一个里面有四个文件对象。
    在这里插入图片描述

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

  3. yml支持松散绑定
    松散绑定是什么意思呢,还是刚刚的例子,我们刚刚yml与Student中的属性是完全相同的,那我们测试一下,如果名字不相同会不会绑定成功。
    在这里插入图片描述经过测试我们发现,-、 _ 、英文大写对于值得注入没有任何影响,但是如果字母不相同,注入就不成功

  4. 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

  1. properties我们就很熟了,首先他是不支持多文档格式的,我们要想实现切换端口号改变环境就要配置多个properties
  2. 不支持复杂类型的封装与注入,只能单个注入
  3. 不支持松散绑定
  4. 不支持JSR303验证
  5. 支持SpEL表达式

在加载顺序上,yml文件先被加载,但如果你同时配置了yml与properties文件,properties后加载会覆盖掉yml中的配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值