当前位置: 首页 > wzjs >正文

摄影手机网站模板海南网站设计

摄影手机网站模板,海南网站设计,塔城市建设局网站,wordpress设置为繁体字在日常开发中,参数校验是保障接口健壮性与数据安全的第一道防线。Spring Boot 为我们提供了基于 JSR-303/JSR-380 的强大校验机制,通过注解与 AOP 实现了灵活且高效的数据校验方式。本篇博客将详细介绍 Spring Boot 中 Valid、Validated 注解的使用方法&…

在这里插入图片描述

在日常开发中,参数校验是保障接口健壮性与数据安全的第一道防线。Spring Boot 为我们提供了基于 JSR-303/JSR-380 的强大校验机制,通过注解与 AOP 实现了灵活且高效的数据校验方式。本篇博客将详细介绍 Spring Boot 中 @Valid@Validated 注解的使用方法,并深入解析其背后的原理与扩展能力。


一、引入依赖

Spring Boot 项目中默认支持 javax.validation,但建议显式引入:

<!-- Hibernate Validator 是实现规范最广的一个实现 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId>
</dependency>

二、基础注解使用

在 Java Bean 上添加注解,示例:

public class UserDTO {@NotBlank(message = "用户名不能为空")private String username;@Email(message = "邮箱格式不正确")private String email;@Min(value = 18, message = "年龄必须 >= 18")@Max(value = 100, message = "年龄必须 <= 100")private Integer age;// Getter / Setter
}

三、在 Controller 中启用校验

1. 使用 @Valid(javax.validation)注解:

@RestController
@RequestMapping("/user")
public class UserController {@PostMapping("/create")public ResponseEntity<String> createUser(@Valid @RequestBody UserDTO user) {return ResponseEntity.ok("创建成功");}
}

2. 使用 @Validated(Spring 提供)支持 分组校验

public class UserDTO {@NotBlank(message = "用户名不能为空", groups = Create.class)private String username;public interface Create {}
}
@PostMapping("/create")
public ResponseEntity<String> createUser(@Validated(UserDTO.Create.class) @RequestBody UserDTO user) {return ResponseEntity.ok("按分组校验通过");
}

四、校验嵌套对象

public class OrderDTO {@NotNull@Valid // 注意:嵌套对象必须加 @Valid 才能触发其内部校验private UserDTO user;
}

五、处理校验失败异常

Spring Boot 默认抛出 MethodArgumentNotValidException(@Valid)或 ConstraintViolationException(@Validated)。

可以通过全局异常处理捕获并格式化返回:

@RestControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler(MethodArgumentNotValidException.class)public ResponseEntity<?> handleValidException(MethodArgumentNotValidException ex) {String errorMsg = ex.getBindingResult().getAllErrors().stream().map(DefaultMessageSourceResolvable::getDefaultMessage).collect(Collectors.joining("; "));return ResponseEntity.badRequest().body("参数错误:" + errorMsg);}
}

六、自定义校验注解

1. 自定义注解:

@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {PhoneValidator.class})
public @interface Phone {String message() default "手机号格式不正确";Class<?>[] groups() default {};Class<? extends Payload>[] payload() default {};
}

2. 编写校验器:

public class PhoneValidator implements ConstraintValidator<Phone, String> {private static final Pattern PATTERN = Pattern.compile("^1[3-9]\\d{9}$");@Overridepublic boolean isValid(String value, ConstraintValidatorContext context) {return value != null && PATTERN.matcher(value).matches();}
}

3. 使用:

@Phone
private String phone;

七、常用校验注解速查表

注解功能说明
@NotNull不能为 null
@NotEmpty不能为 null 且长度 > 0
@NotBlank不能为 null 且去空格后长度 > 0
@Email邮箱格式
@Min最小值限制
@Max最大值限制
@Pattern正则校验
@Size长度范围校验
@Future必须是未来时间
@Past必须是过去时间

八、注意事项与最佳实践

  • 嵌套校验字段必须加 @Valid
  • @Validated 支持分组、@Valid 不支持。
  • 实体类字段建议使用包装类型(如 Integer 而非 int),避免 null 时校验器报错。
  • 参数校验推荐配合统一响应结构,提升开发与调试体验。

http://www.dtcms.com/wzjs/285135.html

相关文章:

  • 网站主体负责人全球十大搜索引擎入口
  • 做网站不推广江阴网站制作公司
  • 网站店铺的图片怎么做的优化公司流程制度
  • 闵行西安网站建设百度网盟推广官方网站
  • wap站开发十种营销方式
  • 建设通网站上的业绩能否删除掉seo网站搜索优化
  • 网站规划与建设 ppt优化课程体系
  • 签到 做任务赚钱的网站永久免费的网站服务器有哪些软件
  • 珠海市网站开发公司宁波seo怎么做引流推广
  • 网站建设需要的费用百度精简版入口
  • vi设计公司哪里四川seo整站优化费用
  • 彩票型网站建设廊坊百度快照优化排名
  • 简洁网站首页模板公司官网开发制作
  • 小米手机网站架构培训课程网站
  • 帮客户做网站 没签合同咋办全网营销推广系统
  • 竞价网站单页面长春网站快速优化排名
  • b2c商城网站开发价格淮安网站seo
  • 深圳做棋牌网站建设哪家公司便宜互联网推广运营是做什么的
  • 个人免费网站空间百度风云榜游戏
  • 网站点击率如何做竞价托管哪家专业
  • 视频直播网站开发运营步骤软件商店安装
  • jarvis主题wordpress首页排名优化公司
  • 湖北建设委员会网站快速建站工具
  • 紫金网站制作策划百度百科优化
  • 三亚中国检科院生物安全中心门户网站建设seo的作用主要有
  • 长沙整合推广2023网站seo
  • 网站维护电话2345系统导航
  • 个人简历网免费模板seo网站有优化培训班吗
  • 英国做电商网站有哪些郑州seo价格
  • wordpress在本地建站seo短视频加密路线