Validator(4)
-
검증 - Bean Validation(HTTP 메시지 컨버터)
들어가기 전에, @Valid , @Validated 는 HttpMessageConverter ( @RequestBody )에도 적용할 수 있다. > @RequestBody 는 HTTP Body의 데이터를 객체로 변환할 때 사용한다. 주로 API JSON 요청을 다룰 때 사용한다. 다음과 같은 컨트롤러가 있다. @Slf4j @RestController @RequestMapping("/validation/api/items") public class ValidationItemApiController { @PostMapping("/add") public Object addItem(@RequestBody @Validated ItemSaveForm form, BindingResult bindingResult) { ..
2022.04.02 -
검증 - Bean Validation
이전 포스팅에서 다뤘던 Validation보다 편리한 Bean Validation을 소개한다. 사용을 위해서는 먼저 라이브러리를 추가해야 한다. build.gradle에 implementation 'org.springframework.boot:spring-boot-starter-validation' 추가해 라이브러리를 등록하자. 스프링 부트는 이 라이브러리를 넣으면 자동으로 Bean Validator를 인지하고 스프링에 통합해준다. 또, 스프링 부트는 자동으로 글로벌 Validator로 등록한다. 이 등록된 Validator는 @NotNull, @Max 등의 애노테이션을 보고 검증을 수행한다. 이렇게 글로벌 Validator가 등록되어있으므로, 검증하고자 하는 파라미터 앞에 @Valid 또는 @Valid..
2022.04.02 -
검증 - Validation (2)
이전 검증 - Validation (1) 포스팅 참고 Controller에서 rejectValue()메서드를 활용해 한층 깔끔해졌다고 해도, 여전히 Controller에는 검증하는 코드가 한가득 있다. 복잡한 검증 로직을 따로 분리하자. ItemValidator를 만들어보자 @Component public class ItemValidator implements Validator { @Override public boolean supports(Class clazz) { return Item.class.isAssignableFrom(clazz); } @Override public void validate(Object target, Errors errors) { Item item = (Item) target;..
2022.03.31 -
검증 - Validation(1)
BindingResult 스프링이 제공하는 검증 오류를 보관하는 객체이다. 검증 오류가 발생하면 해당 필드가 여기에 저장된다. BindingResult 가 있으면 @ModelAttribute 에 데이터 바인딩 시 오류가 발생할 경우 컨트롤러가 호출된다! @ModelAttribute에 바인딩 시 타입 오류가 발생하면? BindingResult 가 없으면 400 오류가 발생하면서 컨트롤러가 호출되지 않고, 오류 페이지로 이동한다. BindingResult 가 있으면 오류 정보( FieldError )를 BindingResult 에 담아서 컨트롤러를 정상 호출한다(컨트롤러에서 재주껏 처리하도록) BindingResult에 검증 오류를 적용하는 3가지 방법 @ModelAttribute 의 객체에 타입 오류 등으..
2022.03.31