javax.validation:validation-api 常用注解

概述

在我们应用程序的业务逻辑中,经常会碰到参数校验的情况,手动的在代码层上面进行校验就会带来很不好的体验,阅读、维护的成本会大大增加,造成冗余。因此有了这个JSR 303。

JSR-303 是Java EE 6 中的一项子规范,叫做BeanValidation。
Bean Validation为JavaBean提供了相应的API来给我们做参数的验证。
Bean Validation 是一个运行时框架,在验证之后错误信息会直接返回。

完整的jar包:javax.validation:validation-api:2.0.1.Final.jar

注意:SpringBoot2 项目web组件已经内置了这个依赖了

<!--添加依赖-->
<dependency>
 <groupId>javax.validation</groupId>
 <artifactId>validation-api</artifactId>
 <version>2.0.1.Final</version>
</dependency>

官方参考实现是hibernate-validator。
hibernate-validator实现了JSR-303规范,需要引入

<dependency> 
	<groupId>org.hibernate</groupId>
	<artifactId>hibernate-validator</artifactId>
	<version>5.1.3.Final</version>
</dependency>

通过Bean Validation比如@NotNull @Pattern等方法来对我们字段的值做进一步的校验;

@NotEmpty

The annotated element must not be {@code null} nor empty. Supported types are:
不能是null
不能是空字符
集合框架中的元素不能为空
加了@NotEmpty注解的String类 ,Collection集合,Map ,数组,这些是不能为null或者长度为0的;
(String ,Collection,Map的isEmpty()方法)

@NotNull

主要用在基本数据类型上(Int,Integer,Double)

被修饰元素不能为null
举例:
@NotNull(message = “年龄不能为空”)
private Integer age;

@NotBlank

主要用在String字符串上面(String)
只能用于字符串不为null,并且字符串trim()以后length要大于0

The annotated element must not be {@code null} and must contain at least one
non-whitespace character.(必须包含至少一个非空白字符。)
这个注解用来判断字符串或者字符
举例:
@NotBlank(message = “名字不能为空”)
private String name;

相关参考

@Validated和@Valid的使用总结

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`javax.validation.ConstraintViolationException` 是 Java Bean Validation 规范中定义的异常,表示数据校验失败。当使用注解对方法参数进行校验时,如果参数不符合校验规则,则会抛出 `javax.validation.ConstraintViolationException` 异常。 一般情况下,我们需要在代码中对该异常进行捕获和处理,并将错误信息返回给客户端。以下是一个使用 `@ExceptionHandler` 注解捕获和处理 `javax.validation.ConstraintViolationException` 异常的例子: ```java @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(javax.validation.ConstraintViolationException.class) @ResponseBody public ResponseEntity<String> handleValidationException(javax.validation.ConstraintViolationException ex) { Set<ConstraintViolation<?>> violations = ex.getConstraintViolations(); StringBuilder sb = new StringBuilder(); for (ConstraintViolation<?> violation : violations) { sb.append(violation.getMessage()).append("\n"); } return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(sb.toString()); } } ``` 在上述代码中,我们使用 `@ExceptionHandler` 注解捕获 `javax.validation.ConstraintViolationException` 异常,并通过 `ex.getConstraintViolations()` 方法获取到所有的校验错误信息。然后将错误信息构造成一个字符串返回给客户端。 需要注意的是,使用 `@ControllerAdvice` 注解可以将异常处理器作用于所有的控制器中。而 `@ExceptionHandler` 注解则用于标识具体的异常处理方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值