validation 추상화

org.springframework.validation.Validator

애플리케이션에서 사용하는 객체 검증용 인터페이스

특징

  • 어떤 계층과도 관계가 없다.

    • 웹 계층 뿐 아니라 서비스, 데이터 등 다양한 곳에서 사용할 수 있다.

  • Bean Validation을 지원한다.

    • Bean Validation

      • 자바 표준 스펙 = Java EE 표준 스펙

      • @NotEmpty, @NotNull 등

구현

  • 인터페이스를 implemnets할 때는 두 메서드를 구현해야한다.

    • supports()

    • validate()

public class EventValidator implements Validator {

    @Override
    public boolean supports(Class<?> clazz) {
        return Event.class.equals(clazz);
    }

    @Override
    public void validate(Object target, Errors errors) {
        ValidationUtils.rejectIfEmptyOfWhitespace(...);
    }
}

스프링 부트에서의 validator

@Component
public class AppRunner implements ApplicationRunner {

    @Autowired
    Validator validator;

    @Override
    public void run(ApplicationArguments args) {
        Event event = new Event();
        event.title("");
        Errors errors = new BeanPropertyBindingResult(event, "event");

        // 검증한다.
        validator.validate(event, errors);
    }
}
  • validator를 빈으로 바로 주입받을 수 있다.

Reference

Bean Validation

Last updated