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;
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);
});
}
}
'Back-End > Spring' 카테고리의 다른 글
[Spring Cloud Config] Client 의 bootstrap.yml 지원 만료 (0) | 2021.02.22 |
---|---|
스프링부트 도커 이미지 만들기 (에러 해결 과정) (feat. querydsl) (0) | 2021.02.22 |
[백기선] 스프링 프레임워크 핵심 기술 정리4 - Resource (0) | 2020.10.04 |
[백기선] 스프링 프레임워크 핵심 기술 정리3 - ApplicationContext (0) | 2020.10.04 |
[백기선] 스프링 프레임워크 핵심 기술 정리2 - Bean, Component (0) | 2020.10.04 |
댓글