@Valid, @Validated

yshjft·2022년 6월 7일
0

해당 내용을 정리하게된 계기

@Valid@Validated의 차이를 모른 상태로 단순히 데이터 바인딩시 작성한 validation 어노테이션에 따라 검증을 하기 위해 지금까지 사용하였고 이에 대해 코드 리뷰 중 지적을 받아 다시 학습을 하게 되었다.

@Valid

지금까지 내가 알고 있던 내용과 동일하다. 데이터 바인딩시 contraint(validation annotaion)에 따라 데이터를 검증한다.

public class UserRequestDto {
    @NotBlank
    @Size(min = 1, max = 50)
    private String name;

    @Min(1)
    private Integer age;

    @Size(max = 255)
    private String hobby;
}


public ResponseEntity<ResponseDto> createUser(@Valid @RequestBody UserRequestDto userRequestDto) {
	...
}

@Validated

기능은 @Valid와 동일하다. 단 validation 그루핑을 이용하여 원하는 속성만 유효성 검사를 할 수 있도록 만들 수 있다.

Constraint Groups

public interface Group1 {
}

public interface Group2 {
}

Using Constraint Groups

public class User {
    private Integer id;
    @NotEmpty(groups = {Group1.class})
    private String account;
    @NotEmpty(groups = {Group2.class})
    private String password;
}

Controller

@PostMapping("/user/login")
public ResponseEntity login(@RequestBody @Validated(Group1.class) User user, BindingResult bindingResult) {
	...
}
profile
꾸준히 나아가자 🐢

0개의 댓글