Spring Validation
스프링 프레임워크에서 지원하는 기능으로 주로 입력 데이터나 외부 데이터의 유효성을 검증하는 데 사용됩니다. 이를 통해 잘못된 데이터가 시스템으로 들어가는 것을 방지하고 안전성을 높일 수 있습니다.
의존성 주입
@Validation
javax.validation.constraints 패키지에 있는 어노테이션들을 필드에 적용하여 해당 필드의 제약조건을 정의합니다.
@NotNull, @Size, @Email등을 사용하여 필드에 대한 유효성을 정의할 수 있습니다.
Validation Interface
Validator 인터페이스는 실제로 객체를 유효성 검사하는 데 사용됩니다. 스프링에서는 이 인터페이스를 구현하여 커스텀한 유효성 검사 로직을 작성할 수 있습니다.
스프링 MVC에서 컨트롤러에서의 입력 데이터의 유효성 검사를 위해 Annotation 기반의 validation이 사용됩니다. 이를 위해 @Valid 어노테이션을 이용하여 컨트롤러의 메서드 파라미터나 DTO 객체에 적용하여 유효성 검사를 수행할 수 있습니다.
@Valid와 Validated 차이점
@Valid
자바 표준인 JSR-3030에 기반합니다. 주로 메서드 파라미터나 필드에 사용되며, 객체가 유효성 검사를 받아야 할 때 사용됩니다. 주로 스프링 MVC의 컨트롤러에서 @ModelAttribute나 @RequsetBody와 함께 사용됩니다.
@PostMapping("/users")
public String createUser(@Valid @RequestBody UserDTO userDTO) {
}
@Validated
주로 클래스나 그룹화된 검증에 사용됩니다. @Validated는 더 세밀한 제어를 가능하게 해 주는데, 특정 그룹의 Validation을 지정하거나, 검증 순서를 변경하거나, 인터페이스 기반의 검증을 수행할 때 사용됩니다.
@Service
@Validated
public class UserService {
public void createUser(@NotNull String name, @Email String email) {
}
}
주요 차이점은 @Valid는 주로 Bean Validation 스펙과 함꼐 사용되며, @Validated는 스프링이 제공하는 더 다양한 유효성 검사 옵션을 사용할 수 있다는 것입니다.
'Spring(Boot & FrameWork)' 카테고리의 다른 글
MyBatis (0) | 2023.12.12 |
---|---|
AOP (0) | 2023.11.30 |
Parameter (0) | 2023.11.28 |