본문 바로가기
Spring

[백기선] 스프링 프레임워크 핵심 기술 정리5 - Validation

by hongdor 2020. 10. 4.

Validation은 객체 검증용 인터페이스이다.

 

이클립스 스프링부트에서는 starter에 포함되어있지 않기 때문에 pom.xml

 

<dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-validation</artifactId>

</dependency>

 

를 새로 추가해 줘야한다.

 

최근 스프링 버전에서는 Validator 클래스가 Bean으로 자동 등록된다.

 

1. 클래스에 필드변수에 @NotEmpty 등 어노테이션 설정

public class Event {

 

    Integer id;

 

    @NotEmpty

    String title;

 

    @NotNull @Min(0)

    Integer limit;

 

    @Email

    String email;

 

    //... 이하 get set 메소드

}

 

2. Validator 클래스를 이용해 검증

package com.example.demo;

 

import java.util.Arrays;

 

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.ApplicationArguments;

import org.springframework.boot.ApplicationRunner;

import org.springframework.core.io.ResourceLoader;

import org.springframework.stereotype.Component;

import org.springframework.validation.BeanPropertyBindingResult;

import org.springframework.validation.Errors;

import org.springframework.validation.Validator;

 

@Component

public class AppRunner implements ApplicationRunner{

 

    @Autowired

    Validator validator;

 

    @Autowired

    ResourceLoader resourceLoader;

 

    @Override

    public void run(ApplicationArguments args) throws Exception {

        System.out.println(validator.getClass()); // 클래스 위치 확인용

 

        Event event = new Event();

        event.setLimit(-1);

        event.setEmail("aaa2");

        Errors errors = new BeanPropertyBindingResult(event, "event");

 

        validator.validate(event, errors); //검증

 

        System.out.println(errors.hasErrors()); // Error true or false 출력

 

        errors.getAllErrors().forEach(e -> { // Error 코드 출력

        System.out.println("==error code ==");

        Arrays.stream(e.getCodes()).forEach(System.out::println);

        });  

    }

}

 

 

 

 

댓글0