[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();
    }

}

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다