在 Spring Boot 中验证 Bean

Tap*_*pan 1 spring spring-mvc spring-data spring-data-jpa spring-boot

spring boot 有没有办法验证 bean 中的属性?例如,考虑一个由以下属性组成的 Employee Bean -

  1. id - 必须以 01,02,22 开头
  2. 部门 - 应该是 D1、D2、D3 中的任何一个
  3. 名称 - 不得包含任何数字且最大长度为 10 个字符。

我可以有一个单独的方法并每次都验证 bean,但正在寻找一些更好的方法来使用 spring boot 来实现它。

Abd*_*glu 5

您可以使用 Spring Boot 验证来验证您的模式。这种依赖关系添加到您的gradle这个文件执行(“org.springframework.boot:弹簧引导启动验证”)https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-validation结账最新版本

class Employee {

  @Pattern(regexp = "^(01|02|22).+$")
  private String id;

  @Size(max = 10)
  @Pattern(regexp = "^[^0-9]+$")
  private String name;

  @Pattern(regexp = "^D[1-3]$")
  private String department;
  
}
Run Code Online (Sandbox Code Playgroud)

并在您的要求中

@RestController
class EmployeeRequest {

  @PostMapping("/registerEmployee")
  ResponseEntity<String> registerEmployee(@Valid @RequestBody Employee employee) {
    return ResponseEntity.ok("valid");
  }
}
Run Code Online (Sandbox Code Playgroud)

注意:我不确定正则表达式的语法,但您应该根据业务需求定义正则表达式。