Validation

SeungJoo
|2023. 12. 6. 22:07
반응형

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는 스프링이 제공하는 더 다양한 유효성 검사 옵션을 사용할 수 있다는 것입니다.

728x90

'Spring(Boot & FrameWork)' 카테고리의 다른 글

MyBatis  (0) 2023.12.12
AOP  (0) 2023.11.30
Parameter  (0) 2023.11.28