11.Validation 추상화

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);
});

}


Share