새소식

TIL

[TIL] 230618 <Spring> Jakarta Validation API

  • -

 

🧩 Jakarta Validation API를 사용하여 객체의 유효성 검증하기

 

Jakarta Validation API는 Java Bean Validation의 최신 버전으로,
객체의 필드에 설정된 제약 조건(Constraints)을 검사하고, 유효하지 않은 경우에는 해당 오류를 보고.
→ Java 애플리케이션에서 데이터의 일관성과 유효성을 보장하는 데 필수적인 도구



Jakarta Validation API 개요



1. ValidatorFactory 생성

ValidatorFactory factory = Validation.buildDefaultValidatorFactory();


   - 'Validation.buildDefaultValidatorFactory()' 메서드 : 기본 구성을 사용하여 `ValidatorFactory` 인스턴스를 생성
   - 'ValidatorFactory' : Validator 객체를 생성



2. Validator 생성

Validator validator = factory.getValidator();


   - 'ValidatorFactory'에서 'getValidator()' 메서드를 호출하여 실제 'Validator' 객체를 생성
   - 'Validator' 객체는 실제 유효성 검사를 수행하는 인스턴스



3. 유효성 검증 수행

Set<ConstraintViolation<SignupRequestDto>> violations = validator.validate(signupRequestDto);


   - 'Validator' 객체의 'validate()' 메서드를 사용하여 주어진 객체(signupRequestDto)의 유효성을 검증
   - 메서드는 `Set<ConstraintViolation<SignupRequestDto>>`을 반환하며, 이는 검증 결과로 발생한 모든 오류를 포함함



4. ConstraintViolation 객체

    'ConstraintViolation' 객체는 유효성 검사에서 발생한 각 오류를 나타냄
     - 'getPropertyPath()': 오류가 발생한 속성의 경로를 나타내는 객체.
     - 'getMessage()': 발생한 오류에 대한 메시지.
     - 'getInvalidValue()': 유효성 검사를 실패한 속성의 값.

 

 



주요 활용법


- 유효성 검사: 주어진 객체의 각 필드에 대해 정의된 제약 조건(Annotation 기반)을 검사
- 오류 처리: 검증 결과인 'Set<ConstraintViolation>'을 통해 각 오류를 처리하고, 클라이언트에게 적절한 메시지를 제공
- 통합: Spring Framework, Jakarta EE, Micronaut 등 다양한 Java 프레임워크와 통합하여 사용가능
- 다국어 지원: 'Locale'을 설정하여 메시지를 다국어로 제공

Locale.setDefault(Locale.KOREAN);

 

 




제약 조건(Constraints)



- @NotNull, @NotEmpty, @NotBlank: 필드가 null이 아니거나 값이 비어 있지 않아야 함
- @Size(min, max): 필드의 길이나 크기가 주어진 범위 내여야 함
- @Pattern(regexp): 필드의 값이 주어진 정규 표현식과 일치해야 함
- @Email: 필드의 값이 유효한 이메일 주소 형식이어야 함
- @Min, @Max: 숫자 필드의 최소값과 최대값
- @Valid: 중첩된 객체(객체 그래프)의 유효성을 검사할 때 사용

 


 

장점



- 코드 중복 최소화: 객체의 유효성 검증 로직을 한 곳에 집중하여 중복 코드를 줄임
- 강력한 검증: 제약 조건에 따라 자동으로 검증을 수행하므로 일관된 데이터 검증이 가능
- 확장성: 사용자 정의 제약 조건을 만들어 필요에 맞게 유효성 검사를 확장 가능

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.