spring-boot中可以用@validated来校验数据

在Spring Boot的Controller中,通过使用@Validated注解可以实现数据的校验,有效防止运行时异常,确保输入数据的正确性。
摘要由CSDN通过智能技术生成

controller的方法添加 @Validated:

public Result<?> add(@Validated @RequestBody WmsSysProduct wmsSysProduct)
.实体类属性添加注解 
@NotBlank(message = "测试返回信息")
private String descc;

拦截运行时异常:


```java
@ControllerAdvice
public class SharpBootException extends RuntimeException {

 //处理Get请求中 使用@Valid 验证路径中请求实体校验失败后抛出的异常,详情继续往下看代码
 @ExceptionHandler(BindException.class)
 @ResponseBody
 public Result<?> BindExceptionHandler(BindException e) {
  String message = e.getBindingResult().getAllErrors().stream().
    map(DefaultMessageSourceResolvable::getDefaultMessage).
    collect(Collectors.joining(","));
  return Result.error(message);
 }

 //处理请求参数格式错误 @RequestParam上validate失败后抛出的异常是javax.validation.ConstraintViolationException
 @ExceptionHandler(ConstraintViolationException.class)
 @ResponseBody
 public Result<?> ConstraintViolationExceptionHandler(ConstraintViolationException e) {
  String message = e.getConstraintViolations().stream().map(ConstraintViolation::getMessage).collect(Collectors.joining(","));
  return Result.error(message);
 }

 //处理请求参数格式错误 @RequestBody上validate失败后抛出的异常是MethodArgumentNotValidException异常。
 @ExceptionHandler(MethodArgumentNotValidException.class)
 @ResponseBody
 public Result<?> MethodArgumentNotValidExceptionHandler(MethodArgumentNotValidException e) {
  String message = e.getBindingResult().getAllErrors().stream().
    map(DefaultMessageSourceResolvable::getDefaultMessage).collect(Collectors.joining(","));
  return Result.error(message);
 }
}


@Valid和@Validated注解在Spring Boot用于验证输入数据,但它们有一些区别。 @Valid注解是JSR-303规范定义的注解,用于验证Java Bean的属性。在Spring Boot,@Valid注解可以用于验证请求体数据。如果请求体数据是一个Java Bean对象,可以使用@Valid注解来验证该对象的属性值是否符合要求。\[1\] @Validated注解是Spring框架的一个注解,它是JSR-303规范的扩展。@Validated注解可以用于在方法级别上校验方法参数。它可以用于验证请求参数和请求体数据。@Validated注解可以用于方法级别和类级别上,用于验证方法参数和类属性。\[4\] 在类级别上使用@Validated注解,需要在类上添加该注解。这样可以对整个类的方法参数进行验证。\[3\] 在方法级别上使用@Validated注解,需要在方法参数上添加该注解。这样可以对特定方法的参数进行验证。\[5\] 总结来说,@Valid注解用于验证Java Bean的属性,而@Validated注解用于在方法级别上校验方法参数。@Validated注解是@Valid注解的扩展,可以用于验证请求参数和请求体数据。\[2\]\[4\] #### 引用[.reference_title] - *1* *2* *3* *4* *5* [Spring Boot的@Validated和@Valid](https://blog.csdn.net/jam_yin/article/details/131207998)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值