두개 모두 인자값 검증에서 사용되나 차이점이 있다.
- @Valid
- Java 표준이다.
- DTO, Entitiy 등 검증에는 사용할 수 있으나, 단순 메서드 인자값 검증에는 사용할 수 없다.
- 그룹 기능을 사용 할 수 없다.
- 대부분 컨트롤러의 입력값 검증에 주로 사용
- @Validated
- Spring Framework 전용이다.
- @Valid 외, 단순 메서드 인자값 검증에 사용할 수 있다.
- 그룹 기능을 사용 할 수 있다.
- 그룹, 메서드 인자값 검증에 주로 사용
그룹 기능에 대해 예를들자면,
public interface CreateGroup {}
public interface UpdateGroup {}
public class UserDto {
@NotBlank(groups = CreateGroup.class)
private String name;
@Email(groups = {CreateGroup.class, UpdateGroup.class})
private String email;
}
...
@PostMapping("/users")
public ResponseEntity<String> createUser(@Validated(CreateGroup.class) @RequestBody UserDto dto) {
return ResponseEntity.ok("OK");
}
이와 같이 그룹을 두어 같은 그룹에 있는 값을 검증 하는 것을 말한다.
단순 메서드 인자값 검증의 예를들면 아래와 같다.
@Service
@Validated
public class MyService {
public void process(@Min(5) int count) {
// count < 5 면 ConstraintViolationException 발생
}
}
@Validated 가 좀 더 상위개념이라 이것만 사용해도 되나, 코드 간결성이나 표준을 위해서 적절한 경우 @Valid를 사용하는게 좋아 보이고, 그 외에 @Validated 가 꼭 필요한 경우에 사용하면 좋을듯 하다
'Backend > SpringBoot' 카테고리의 다른 글
| 각종 설정 오버라이드 (WebMvcConfigurer) (0) | 2025.11.07 |
|---|---|
| Admin 페이지 설정하기 (0) | 2025.11.05 |
| @JoinTable (0) | 2025.10.31 |
| BaseEntity 사용 및 time 정보 자동 생성 (0) | 2025.10.31 |
| Custom Annotation (Custom validation) (0) | 2025.10.29 |