jakarta.validation, org.springframework.validation 차이 #237
Replies: 3 comments
-
jakarta.validation이 패키지는 자바 표준 유효성 검사 스펙(Jakarta Bean Validation)에 따른 API를 제공합니다. 이 스펙은 JSR-380 (Java Specification Request 380)으로 정의되며, 자바 기반 애플리케이션에서 데이터 모델의 유효성을 검사하는 데 사용됩니다. 주로 어노테이션을 사용하여 데이터 모델의 필드에 제약 조건을 정의하고, javax.validation.Validator 인터페이스를 통해 유효성 검사를 수행합니다. jakarta.validation은 웹 애플리케이션뿐만 아니라 자바 애플리케이션 전반에 사용될 수 있으며, 여러 자바 프레임워크와 라이브러리에서 지원합니다. Spring Validation이 패키지는 스프링 프레임워크 내에서 제공하는 유효성 검사 및 데이터 바인딩 관련 기능을 포함합니다. 스프링 프레임워크는 자바 애플리케이션의 다양한 측면을 다루며, 데이터 검증 및 바인딩 역시 그 중 하나입니다. 스프링은 org.springframework.validation.Validator 인터페이스와 org.springframework.validation.Errors 인터페이스를 사용하여 커스텀 유효성 검사를 정의하고 데이터 바인딩 오류를 처리합니다. org.springframework.validation은 스프링 프레임워크에서 웹 애플리케이션과 관련된 유효성 검사 및 데이터 바인딩에 사용됩니다. |
Beta Was this translation helpful? Give feedback.
-
jakarta.validation (Jakarta Bean Validation)
implementation('org.hibernate.validator:hibernate-validator:6.1.2.Final')
implementation('org.glassfish:jakarta.el:3.0.3') // Java SE 환경이라면 추가
implementation 'org.springframework.boot:spring-boot-starter-validation' // 이걸 추가해도, 내부에 org.hibernate.validator를 포함하고 있으므로, 동작한다.
class TestHaha {
class Hi {
@NotNull
private final String message;
public Hi(String message) {
this.message = message;
}
}
@Test
void 그냥_어노테이션만_있으면_생성할_때_예외가_발생하지_않는다() {
assertThatCode(() -> new Hi(null))
.doesNotThrowAnyException();
}
@Test
void 어노테이션_선언과_함께_validator를_사용하면_생성할_때_예외가_발생한다() {
Hi hi = new Hi(null);
ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory();
Validator validator = validatorFactory.getValidator();
Set<ConstraintViolation<Hi>> violations = validator.validate(hi);
Assertions.assertThat(violations).isNotEmpty();
Assertions.assertThatThrownBy(() -> {throw new ConstraintViolationException(violations);})
.isInstanceOf(ConstraintViolationException.class);
}
} org.springframework.validation
사용 예시
@PostMapping("/users")
@ResponseBody
public void createUser(@Valid @RequestBody User user, BindingResult result) {
if (result.hasErrors()) {
// RequestBody 바인딩 시 발생한 예외를 처리할 수 있다.
}
} ref. |
Beta Was this translation helpful? Give feedback.
-
jakarta.validation의
|
Beta Was this translation helpful? Give feedback.
-
.
Beta Was this translation helpful? Give feedback.
All reactions