SpringBoot中如何全面解析bean属性校验与进制数据转换规则?

2026-05-25 23:531阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计713个文字,预计阅读时间需要3分钟。

SpringBoot中如何全面解析bean属性校验与进制数据转换规则?

目录+常用计量单位+Bean属性校验+数据转换规则+yaml值表达式方式+常用计量单位+SpringBoot支持JDK8提供的日期与时间计量单位+@Data/@Lombok省去get/set/toString+@ConfigurationProperties(prefix=)

目录
  • 常用计量单位
  • bean属性校验
  • 进制数据转换规则
    • yaml字面值表达式方式

常用计量单位

SpringBoot支持JDK8提供的时间与空间计量单位

@Data //lombok省去get/set/toString @ConfigurationProperties(prefix = "servers") //配置文件的位置,对应的属性注入 public class ServerConfig { private String ipAddress; private int port; private String detail; //时间 private Duration serverTimeOut; //存储空间 private DataSize dataSize; }

配置文件中可以在之后直接加单位

servers:
ipAddress: 192.158.0.1
port: 1234
detail: zhangsan
serverTimeOut: 10s
dataSize: 4MB

运行结果

或者不在配置文件加单位,在实体类中加注解

bean属性校验

开启Bean数据校验

SpringBoot中如何全面解析bean属性校验与进制数据转换规则?

①添加JSR303规范坐标与Hibernate校验框架对应坐标

<!-- 提供规范的接口--> <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> </dependency> <!-- 对上面接口的实现--> <dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> </dependency>

②:@Validated开启校验功能

③:设置校验规则

@Data //lombok省去get/set/toString //@Component //交给spring容器管理 @ConfigurationProperties(prefix = "servers") //配置文件的位置,对应的属性注入 //②开启校验 @Validated public class ServerConfig { private String ipAddress; // ③设置校验规则 @Max(value=9000,message = "最大不能超过9000") @Min(value=100,message = "最大不能低于100") private int port; private String detail; private Duration serverTimeOut; private DataSize dataSize; }

运行之后,当设置的校验不在这个范围则会报错

小结:

启用Bean属性校验

导入JSR303与Hibernate校验框架坐标

使用@Validated注解启用校验功能

使用具体校验规则规范数据校验格式

进制数据转换规则

配置文件中的数字存在进制转换

当以0开头,且后续为(0-7),会自动转为八进制

当以0x开头,且后续为(0-9,a-f)会自动转为十六进制

application.yml下

mysql:
Password1: 01234
Password2: 0x2345
Password3: 0187
Password4: "01234"

test类

package com; import com.pojo.ServerConfig; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.ApplicationContext; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; @SpringBootTest class Springboot11ConfigurationApplicationTests { @Value("${mysql.Password1}") private String password1; @Value("${mysql.Password2}") private String password2; @Value("${mysql.Password3}") private String password3; @Value("${mysql.Password4}") private String password4; @Test void contextLoads() { System.out.println(password1); System.out.println(password2); System.out.println(password3); System.out.println(password4); } }

运行结果:

可以看出当加上双引号不会发生进制转换,所以在进行这类操作时,应当加上双引号。当十进制以0开头,会到之后

yaml字面值表达式方式

到此这篇关于SpringBoot常用计量与bean属性校验和进制数据转换规则全面分析的文章就介绍到这了,更多相关SpringBoot常用计量内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!

本文共计713个文字,预计阅读时间需要3分钟。

SpringBoot中如何全面解析bean属性校验与进制数据转换规则?

目录+常用计量单位+Bean属性校验+数据转换规则+yaml值表达式方式+常用计量单位+SpringBoot支持JDK8提供的日期与时间计量单位+@Data/@Lombok省去get/set/toString+@ConfigurationProperties(prefix=)

目录
  • 常用计量单位
  • bean属性校验
  • 进制数据转换规则
    • yaml字面值表达式方式

常用计量单位

SpringBoot支持JDK8提供的时间与空间计量单位

@Data //lombok省去get/set/toString @ConfigurationProperties(prefix = "servers") //配置文件的位置,对应的属性注入 public class ServerConfig { private String ipAddress; private int port; private String detail; //时间 private Duration serverTimeOut; //存储空间 private DataSize dataSize; }

配置文件中可以在之后直接加单位

servers:
ipAddress: 192.158.0.1
port: 1234
detail: zhangsan
serverTimeOut: 10s
dataSize: 4MB

运行结果

或者不在配置文件加单位,在实体类中加注解

bean属性校验

开启Bean数据校验

SpringBoot中如何全面解析bean属性校验与进制数据转换规则?

①添加JSR303规范坐标与Hibernate校验框架对应坐标

<!-- 提供规范的接口--> <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> </dependency> <!-- 对上面接口的实现--> <dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> </dependency>

②:@Validated开启校验功能

③:设置校验规则

@Data //lombok省去get/set/toString //@Component //交给spring容器管理 @ConfigurationProperties(prefix = "servers") //配置文件的位置,对应的属性注入 //②开启校验 @Validated public class ServerConfig { private String ipAddress; // ③设置校验规则 @Max(value=9000,message = "最大不能超过9000") @Min(value=100,message = "最大不能低于100") private int port; private String detail; private Duration serverTimeOut; private DataSize dataSize; }

运行之后,当设置的校验不在这个范围则会报错

小结:

启用Bean属性校验

导入JSR303与Hibernate校验框架坐标

使用@Validated注解启用校验功能

使用具体校验规则规范数据校验格式

进制数据转换规则

配置文件中的数字存在进制转换

当以0开头,且后续为(0-7),会自动转为八进制

当以0x开头,且后续为(0-9,a-f)会自动转为十六进制

application.yml下

mysql:
Password1: 01234
Password2: 0x2345
Password3: 0187
Password4: "01234"

test类

package com; import com.pojo.ServerConfig; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.ApplicationContext; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; @SpringBootTest class Springboot11ConfigurationApplicationTests { @Value("${mysql.Password1}") private String password1; @Value("${mysql.Password2}") private String password2; @Value("${mysql.Password3}") private String password3; @Value("${mysql.Password4}") private String password4; @Test void contextLoads() { System.out.println(password1); System.out.println(password2); System.out.println(password3); System.out.println(password4); } }

运行结果:

可以看出当加上双引号不会发生进制转换,所以在进行这类操作时,应当加上双引号。当十进制以0开头,会到之后

yaml字面值表达式方式

到此这篇关于SpringBoot常用计量与bean属性校验和进制数据转换规则全面分析的文章就介绍到这了,更多相关SpringBoot常用计量内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!