jakarta.validation과 org.springframework.validation의 차이

KIM YONG GU·2023년 10월 19일

SpringBoot

목록 보기
13/17

jakarta.validation과 org.springframework.validation은 두 가지 다른 패키지에서 제공되는 유효성 검사(Validation) 관련 기능 및 API입니다. 이 두 패키지는 다른 목적과 컨텍스트에서 사용됩니다.

jakarta.validation

  • 이 패키지는 자바 표준 유효성 검사 스펙(Jakarta Bean Validation)에 따른 API를 제공합니다. 이 스펙은 JSR-380 (Java Specification Request 380)으로 정의되며 자바 기반 애플리케이션에서 데이터 모델의 유효성을 검사하는 데 사용됩니다.

  • 주로 어노테이션을 사용하여 데이터 모델의 필드에 제약 조건을 정의하고, javax.validation.Validator 인터페이스를 통해 유효성 검사를 수행합니다.

  • jakarta.validation은 웹 애플리케이션과 상관없이 자바 애플리케이션 전반에 사용될 수 있으며, 여러 자바 프레임워크와 라이브러리에서 지원합니다.

org.springframework.validation

  • 이 패키지는 스프링 프레임워크 내에서 제공하는 유효성 검사 및 데이터 바인딩 관련 기능을 포함합니다. 스프링 프레임워크는 자바 애플리케이션의 다양한 측면을 다루며, 데이터 검증 및 바인딩 역시 그 중 하나입니다.

  • 스프링은 org.springframework.validation.Validator 인터페이스와 org.springframework.validation.Errors 인터페이스를 사용하여 커스텀 유효성 검사를 정의하고 데이터 바인딩 오류를 처리합니다.

  • org.springframework.validation은 스프링 프레임워크에서 웹 애플리케이션과 관련된 유효성 검사 및 데이터 바인딩에 사용됩니다.

두 패키지의 API는 다르지만, 스프링 부트 프레임워크는 jakarta.validation을 사용하여 데이터 모델의 유효성 검사를 지원하고, org.springframework.validation을 사용하여 스프링 애플리케이션 내에서 데이터 바인딩 및 유효성 검사를 수행합니다. 이들을 통합하여 스프링 부트 애플리케이션에서 데이터 유효성 검사를 구현하고 처리할 수 있습니다.

import jakarta.validation.Valid;
import org.springframework.validation.BindingResult;
(... 생략 ...)
public class QuestionController {

    (... 생략 ...)

    @PostMapping("/create")
    public String questionCreate(@Valid QuestionForm questionForm, BindingResult bindingResult) {
        if (bindingResult.hasErrors()) {
            return "question_form";
        }
        this.questionService.create(questionForm.getSubject(), questionForm.getContent());
        return "redirect:/question/list";
    }
}

@Valid는 jakarta의 메서드고, BindingResult는 스프링부트 validation의 메서드인지?

@Valid와 BindingResult는 서로 다른 유효성 검사 관련 기능을 제공하는 두 가지 서로 다른 패키지의 클래스와 어노테이션입니다.

@Valid

  • @Valid 어노테이션은 jakarta.validation 패키지의 일부로, 자바 Bean Validation 스펙(Jakarta Bean Validation)에 따라 데이터 모델의 유효성 검사를 활성화하는 데 사용됩니다.

  • 이 어노테이션을 사용하면 데이터 모델 객체에 적용된 유효성 검사 어노테이션을 검사합니다. 데이터 모델 객체가 제약 조건을 위반하는 경우, 해당 검사 오류는 BindingResult에 기록됩니다.

BindingResult

  • BindingResult 클래스는 org.springframework.validation 패키지의 일부로, 스프링 프레임워크에서 유효성 검사 결과 및 데이터 바인딩 오류를 저장하고 관리하는 데 사용됩니다.

  • BindingResult 객체는 스프링 MVC 컨트롤러 메서드에서 @Valid 어노테이션과 함께 사용되며, 데이터 모델 객체의 유효성 검사를 수행한 후 발생한 오류를 수집하고 제어합니다. 오류가 발생한 경우, 해당 오류 정보를 처리하고 적절한 응답을 생성하거나 리디렉션할 수 있습니다.

따라서 @Valid 어노테이션은 데이터 모델 객체의 유효성 검사를 활성화하고, BindingResult는 검사 결과를 수집하고 처리하는 데 사용됩니다. 이들은 다른 패키지에 속하고 서로 다른 역할을 하지만 함께 사용하여 데이터 유효성 검사를 스프링 애플리케이션에서 구현할 수 있습니다.

유효성 검사는 @Valid이 하고 그 유효성 검사의 결과를 저장하고 적절한 조취를 취하는 게 BindingResult

profile
Engineer, Look Beyond the Code.

0개의 댓글