[Spring]List(Collection)에 @Valid 적용하기
Java에서 제공하는 빈 검증기(Bean Validator)인 @Valid 는 Collection 타입에는 적용되지 않는다.
예컨데 아래와 같은경우 “/addUser”는 검증기능이 정상적으로 동작하나 “/addUsers”의 경우에는 기대한대로 동작하지 않는다.
@Getter public class User { @NotBlank private String name; @Min(10) private int age; @Email private String email; } @RestController @RequestMapping("/user") public class UserController { @PostMapping("/addUser") public ResponseEntity<Void> addUser(@RequestBody @Valid User user) { return ResponseEntity.noContent().build(); } @PostMapping("/addUsers") public ResponseEntity<Void> addUsers(@RequestBody @Valid List<User> users) { return ResponseEntity.noContent().build(); } }
이 경우 List<User>를 필드로 가진 클래스를 생성하고, @Valid를 List에 적용하면 해결할 수 있다.
@Getter public class Users { @Valid @Size(max = 100) private List<User> users; } @RestController @RequestMapping("/user") public class UserController { @PostMapping("/addUsers") public ResponseEntity<Void> addUsers(@RequestBody @Valid Users users) { return ResponseEntity.noContent().build(); } }
최신 댓글