[TIL] @Valid와 @Validated의 차이
by 달쿨개요
코드 리뷰 중, 다른 팀원 분이 Controller 메서드에서 @Validated를 사용한 것을 발견했다. 보통 @Valid만 사용했기 때문에 @Validated를 처음 알게 되었고, 두 어노테이션의 차이가 궁금해졌다. 조사해보니, 똑같이 유효성 검증을 위한 어노테이션이지만 크게 Controller에서의 사용 방식과 반환되는 에러에서 차이가 있었다.
@Valid와 @Validated의 주요 차이점
1) Controller에서의 사용
@Valid:
- JSR-380 표준을 따르며, 주로 요청 본문에 포함된 객체 필드 검증에 사용된다.
- Spring MVC의 요청 객체에 사용될 때 자동으로 BindingResult와 함께 에러가 처리된다.
- 단점: 그룹 기반 검증(Group Validation)을 지원하지 않는다.
@Validated:
- Spring의 확장된 검증 기능을 제공하며, 그룹 기반 검증을 지원한다.
- Controller뿐만 아니라, 서비스 계층에서의 메서드 파라미터 검증에도 사용할 수 있다.
- AOP 기반으로 동작하기 때문에 메서드 레벨의 유효성 검증에도 적합하다.
@Validated는 클래스 레벨에 선언 후 다른 유효성 검사 어노테이션을 사용하면 된다.
2) 반환되는 에러
@Valid:
- MethodArgumentNotValidException
@Validated:
- ConstraintViolationException
반환되는 에러가 다르므로 예외 처리를 따로 해줘야 한다.
느낀 점
지금 하는 프로젝트에서는 @Validated 사용이 필요한 상황이 딱히 없다고 생각하지만, 기억해두고 그룹 검증이나 다른 계층에서의 유효성 검증이 필요할 때는 @Validated를 사용해야겠다고 느꼈다. 새로운 지식을 알게 되어서 좋았다.
'TIL' 카테고리의 다른 글
[TIL] JPA의 기본 키 생성 전략 (0) | 2024.11.19 |
---|---|
[TIL] 메타 어노테이션 @Repeatable (1) | 2024.11.18 |
[TIL] Pageable에서 여러 정렬 조건 설정하기 (2) | 2024.11.14 |
[TIL] RequestParam 필수 여부 지정 (0) | 2024.11.13 |
[TIL] 자바 가변 인수 (1) | 2024.11.12 |
블로그의 정보
note
달쿨