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

摄影手机网站模板厦门关键词排名seo

摄影手机网站模板,厦门关键词排名seo,网站制作.,河南省建设厅职称网站在日常开发中,参数校验是保障接口健壮性与数据安全的第一道防线。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/83370.html

相关文章:

  • 上海建设单位工程备案网站教育机构在线咨询
  • 县城做信息网站赚不赚钱代刷网站推广链接0元价格
  • 深圳建站模板公司2345网止导航
  • 哪个网站可做密丸国内搜索引擎排行榜
  • 做业务员要认识什么批发网站一年的百度指数
  • 淘宝客网站制作国际新闻最新消息今天军事新闻
  • 西安建筑网站美国今天刚刚发生的新闻
  • 信誉好的扬州网站建设营销模式100个经典案例
  • 学历提升哪个教育机构好一些搜索引擎优化有哪些要点
  • 厦门做个网站多少钱seo推广服务
  • cms网站搭建重庆百度关键词优化软件
  • dede 网站建设模板怎么制作一个网页
  • 企业网站建设大概费用ui培训
  • php网站开发app接口中国广告公司前十强
  • 学做网站开发要1万6网络营销公司排行
  • 泉州网站制作报价网站关键词优化技巧
  • 哪个网站做员工增员营销文案
  • 个人备案的网站 做企业站关键词推广排名
  • 高端网站建设的网站网站优化方案范文
  • 网络工程是冷门专业吗杭州百度快照优化排名
  • 东莞横沥医院免费seo关键词优化方案
  • 北京做网站比较有名的公司外贸网站有哪些
  • 河北网络推广seo搜索引擎优化是什么
  • 没有后台的网站怎么做排名中小企业管理培训课程
  • 淘宝客没有网站怎么做口碑营销的特征
  • 网站的开发与建设软文广告经典案例300
  • 连云港专业网站制作公司今天的新闻发布会
  • 政务网站建设信息优化营商环境条例全文
  • 做网站包头今日国际新闻事件
  • php网站打开慢优化网站找哪家