Servlet是一个规范,Tomcat实现的
JDBC是一个规范,各个厂商实现的
JSR303也是一个规范,有人提供实现
我们只需要面向接口编程即可。
一般来说,以javax开头的groupId,都是规范
JSR303提供规范,其余框架实现规范。
- 添加JSR303规范,在SpringBoot中不用给出版本号
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
- 添加实现技术
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
在需要校验的Bean上开启校验功能@Validated,然后使用JSR303规范中的注解去定义校验规则就好了。
@Data
@Component
@ConfigurationProperties(prefix = "my-server")
@Validated
public class DataSourceConfigBean {
private String url;
@Max(value = 5000, message = "最大不能超过5000")
@Min(value = 500, message = "最小不能低于500")
private int timeout;
}
当属性注入时,就会进行属性校验,测试一下

关于常用的校验规则有哪些?可以进入到JSR303注解包javax.validation.constraints下查看,这里给出一些常用的。
JSR303中常用的注解有:
| 注解 | 说明 |
|---|---|
| @AssertFalse | 断言为false |
| @AssertTrue | 断言为true |
| @Max | 整型最大值限制 |
| @Min | 整型最小值限制 |
| @DecimalMax | 适用于BigDecimal和String类型的属性 |
| @Null | 值为null |
| @NotNull | 不为Null |
| @NotBlank | 不为空 |
| @Pattern | 正则校验 |
| @Digits | 是数字 |
| 是邮箱 | |
| @Negative | 是负数 |
| @Postiive | 是正数 |
| @Future | 未来的时间 |
| @Past | 过去的时间 |



















