콘텐츠로 이동

2021 05 11

2021-05-11

@NotNull, @NotEmpty, @NotBlank

  • 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, "", " " 다 허용 안함