Validation 추상화
자바 EE 표준스펙중에 하나이다.
org.springframework.validation.Validator는 어플리케이션에서 사용하는 객체 검증용 인터페이스이다.
boolean supports(Class clazz): 검증하는것을 지원하는지 판단
void validate(Object obj, Errors e): 실제 검증 로직을 이 안에서 구현
1 2 3 4 5 6 7
| public class Event { public String id; public String title;
getter ,setter }
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| public class EventValidator implements Validator { @Override pulbic boolean supports(Class<?> clazz) { return Event.class.equals(clazz); }
@Override public void validate(Object target, Errors errors) { ValidationUtils.rejectIfEmptyOrWhitespace(errors, "title", "title이 빈것은 허용하지 않음."); }
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| ... public void run(ApplicationArguments args) throws Exception { Event event = new Event(); EventValidator eventValidator = new EventValidator();
eventValidator.validate(event, errors);
print(errors.hasErrors());
errors.getAllErrors().forEach(e-> { Arrays.stream(e.getCodes()).forEach(System.out::println); });
}
|
스프링 부트 2.0.5 이상부터는
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public class Event { public String id;
@NotEmpty public String title;
@Min(0) Integer limit;
@Email public String email;
getter ,setter }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| ...
@Autowired Validator validator;
public void run(ApplicationArguments args) throws Exception { Event event = new Event(); event.setLimit(-1) event.setEmail("qwe");
validator.validate(event, errors);
print(errors.hasErrors());
errors.getAllErrors().forEach(e-> { Arrays.stream(e.getCodes()).forEach(System.out::println); });
}
|