java 入参校验_Java Validation方法入参校验实现过程解析

一.前言

在日常的开发中,经常需要对方法参数进行校验(非空、长度等)。如果采用hardcode去校验(if..else..),会造成代码冗余,复用性低,导致维护成本比较高。借助Validation组件,可以很方便地通过注解来校验参数。

二.Java Validation组件

JSR

JSR 是一种规范标准,规定了一些校验规范的注解,位于javax.validation.constraints包下,只提供规范不提供实现,如@NotNull,@Size 等

Hibernate Validation

hibernate Validation 与 hibernate ORM框架没有半毛钱关系,它提供了JSR的实现,位于org.hibernate.validator.constraints包下。

三.用法

引入依赖:

javax.validation

validation-api

org.hibernate

hibernate-validator

手动添加bean :

对实体类添加注解:

@Data

publicclassPeople {

@NotNull(message = "姓名不能为空")

privateStringname;

@Min(value = 1, message = "年龄不能小于1岁")

privateInteger size;

}

Controller层上用法:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自定义依赖注解无效的问题可能是因为注解没有被正确地扫描到。在Spring中,扫描自定义注解需要使用@ComponentScan或者@ComponentScan注解的扫描器。如果使用了其他的扫描器,可能会导致注解无法被扫描到。 要使用注解代替代码参数校验,可以使用Spring Validation框架。Spring Validation框架提供了一系列的注解,可以用来替代代码参数校验。 例如,要校验一个字符串是否为空,可以使用@NotBlank注解: ```java public void validate(@NotBlank String str) { // do something } ``` 要校验一个整数是否在某个范围内,可以使用@Min和@Max注解: ```java public void validate(@Min(1) @Max(10) int num) { // do something } ``` 需要注意的是,使用Spring Validation框架需要在配置文件中配置Validator bean,并将这个bean注入到需要进行参数校验的类中。例如: ```java @Configuration public class AppConfig { @Bean public Validator validator() { return new LocalValidatorFactoryBean(); } } ``` ```java @Service public class MyService { private final Validator validator; public MyService(Validator validator) { this.validator = validator; } public void myMethod(@NotBlank String str, @Min(1) @Max(10) int num) { Set<ConstraintViolation<MyService>> violations = validator.validate(this); if (!violations.isEmpty()) { throw new ConstraintViolationException(violations); } // do something } } ``` 在上面的例子中,使用@NotBlank和@Min/@Max注解进行参数校验,并将Validator bean注入到MyService类中。在myMethod方法中,使用Validator对MyService类进行校验。如果有错误,抛出ConstraintViolationException异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值