Java 中优雅的参数校验方法学习

本文介绍如何在Spring Boot中利用JSR-303 Bean Validation进行参数校验,涉及注解的使用、groups属性的应用以及自定义校验分组。通过实例演示了如何确保输入数据的有效性和安全性。
摘要由CSDN通过智能技术生成

Java 中优雅的参数校验方法学习

在这里插入图片描述

简单了解

Spring 官方在 SpringBoot 文档中,关于参数校验(Validation)给出的解决方案是这样的:

The method validation feature supported by Bean Validation 1.1 is automatically enabled as long as a JSR-303 implementation (e.g. Hibernate validator) is on the classpath. This allows bean methods to be annotated with javax.validation constraints on their parameters and/or on their return value. Target classes with such annotated methods need to be annotated with the @Validated annotation at the type level for their methods to be searched for inline constraint annotations.

For instance, the following service triggers the validation of the first argument, making sure its size is between 8 and 10

@Service
@Validated
public class MyBean {

    public Archive findByCodeAndAuthor(@Size(min = 8, max = 10) String code,
            Author author) {
        ...
    }

}

SpringBoot 文档

翻译一下就是使用 JSR-303 规范,直接利用注解进行参数校验。

PS:(JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation,官方参考实现是 Hibernate Validator)

实际体验

  1. Java Bean对象中引入注解,这里我们先不对各个注解代表的含义展开解释。
@Data
@EqualsAndHashCode(callSuper = true)
public class Org extends BaseEntity implements Serializable {

	private static final long serialVersionUID = 6414776805478207026L;
  
	@NotNull((message = "部门id不能为空" )
	private Long id;
  
	@NotBlank(groups = { Update.class })
	@Size(max = 64, min = 1, groups = { Insert.class, Update.class })
	private String orgName;
}
  1. 在Controller 层对应的方法上添加如下注解:
    @Validated
public Result addOrg(@Validated(Insert.class) @RequestBody Org Org) {
..... do something
}
  1. 为什么要做参数验证?
  • 防止恶意用户通过精心构造的参数破坏我们的系统
  • 保证我们的业务有序进行
  • 即便前端已经校验过,因为我们不能保证我们收到的请求都是由我们的前端程序发出

详细了解

JSR303 规范默认提供了以下几种约束注解的定义。


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

未完待续

上文我们已经基本了解如何使用以及各自代表的含义了,但是应该有人已经发现文中对应的校验注解上面添加了 groups 属性,并且在对应的 Controller 层 中使用 @Validated 指定使用了某个分组。下文我们将会学习如何添加参数校验分组以及如何自定义校验注解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值