Spring 기반의 웹 애플리케이션 개발에서 입력 데이터의 유효성을 검사하는 방법으로 주로 @Valid와 @Validated 어노테이션이 사용됩니다. 이 두 어노테이션은 각각 JSR-303 표준과 Spring 프레임워크에서 제공하는 기능을 활용하여 객체의 필드나 메소드 매개변수 등에서 유효성을 검사할 수 있습니다.
@Valid 어노테이션은 JSR-303(Bean Validation) 표준 스펙에 정의되어 있으며, Spring MVC에서 주로 사용됩니다. 주요 동작 원리는 다음과 같습니다:
@Valid 어노테이션이 붙어 있으면 유효성 검증을 수행합니다.@Valid 어노테이션이 적용된 필드에 대해 자동으로 유효성 검사가 진행됩니다.@Valid 어노테이션은 주로 컨트롤러 내에서 동작하며, 다른 계층에서는 사용할 수 없습니다.아래는 간단한 예시 코드입니다:
@RestController
@RequestMapping("/api/users")
public class UserController {
@PostMapping("/register")
public ResponseEntity<String> registerUser(@Valid @RequestBody UserDTO userDTO) {
// 유효성 검사 후 처리 로직
return ResponseEntity.ok("User registered successfully");
}
}
@Validated 어노테이션은 Spring 프레임워크에서 제공하는 기능으로, 보다 세밀한 유효성 검증을 지원합니다. 주요 특징은 다음과 같습니다:
@Validated 어노테이션은 AOP(Aspect-Oriented Programming)을 기반으로 동작하여, 메소드 호출 시점에 유효성 검사를 수행할 수 있습니다.@Validated는 JSR-303과 달리 메소드 매개변수나 클래스 레벨에서만 사용할 수 있습니다.@Validated를 사용하여 객체의 유효성을 검증할 수 있습니다.아래는 @Validated 어노테이션을 사용한 예시 코드입니다:
@Service
@Validated
public class UserService {
public void updateUser(@NotNull Long userId, @Validated UserDTO userDTO) {
// 유효성 검사 후 처리 로직
}
}
Spring 기반 애플리케이션에서는 @Valid와 @Validated 어노테이션을 통해 간편하고 효과적으로 입력 데이터의 유효성을 검사할 수 있습니다. 주의할 점은 @Valid는 주로 컨트롤러에서 사용하고, @Validated는 Spring 빈에서 세밀한 유효성 검사를 위해 활용한다는 점입니다. 올바른 어노테이션의 선택과 사용으로 안정적인 웹 애플리케이션 개발에 기여할 수 있습니다.