2021 05 11
2021-05-11¶
@NotNull, @NotEmpty, @NotBlank¶
- 참고: https://sanghye.tistory.com/36
- Bean Validation에서 제공하는 표준 Validation
- DTO에 해줄 작업들
- 다음과 같이 어노테이션을 붙여 사용
public class UserLoginRequestDto { @NotNull(message = "이름은 Null 일 수 없습니다!") @Size(min = 1, max = 10, message = "이름은 1 ~ 10자 이여야 합니다!") private String name; @NotNull(message = "이름은 Null 일 수 없습니다!") @Min(1) @Max(10) @Email private String email; }- https://beanvalidation.org/2.0/spec/ 해당 링크에서 어노테이션 필요한 것 조회 후 사용 가능 - 이렇게 DTO에서 자연스럽게 입력값의 검증 책임을 갖게됨
- Controller에 해줄 작업들
- @RequestBody에 @Valid를 추가 설정하여 Bean Validation 진행
@PostMapping("/login") public ResponseEntity login(@Valid @RequestBody UserLoginRequestDto loginUser) { UserLoginResponseDto login = userService.login(loginUser); return new ResponseEntity<>(new BaseResult.Normal(login), HttpStatus.OK); }- @ExceptionHandler(MethodArgumentNotValidException.class)를 사용하여 예외 처리하자!
@ExceptionHandler(MethodArgumentNotValidException.class) public Object handleMethodArgumentNotValidException(MethodArgumentNotValidException e) { String errorMessage = e.getBindingResult() .getAllErrors() .get(0) .getDefaultMessage(); printExceptionMessage(errorMessage); return new ResponseEntity<>(new BaseResult.Normal(INVALID_PARAMETER), HttpStatus.BAD_REQUEST); }
- __@NotNUll vs @NotEmpty vs @NotBlank - @NotNull: Null만 허용하지 않음, ""/" " 등은 허용 - @NotEmpty: Null/""을 허용하지 않음, " " 은 허용 - @NotBlank: Null, "", " " 다 허용 안함