Programming/Spring framework

@NotNull 비활성화 이슈 (2024-01-15)

최동훈1 2024. 1. 15. 22:21

문제 해결 PR 

https://github.com/Playlist-pack/Server/pull/64

 

✔️ [Fix] : requestDTO의 @Notnull 기능 정상동작하도록 수정 by ulsandonghun · Pull Request #64 · Playlist-pack/

기존에 동작하지 않았던 javax.validation.constraints의 @NotNull 어노테이션 기능을 새로운 의존성을 추가하여 동작하게 하였습니다. 해당 DTO에 @NotNull이 붙은 필드에 JSON value가 Null이면, 자바라이브러리

github.com

우선적으로 Request의 DTO에 붙은 @NotNull(쉽게 설명하면 반드시 Null이 아니어야 하는 곳에 Null이 입력되어서 전송되었을 경우, RuntimeException을 발생시키는 코드 ) 이다. 특히 해당 NotNull 이 붙은 DTO를 활성화 시킬 경우 컨트롤러에서 해당 @RequestBody 파라미터 앞에 @Valid 라는 애너테이션을 추가로 붙여줘야 한다.  그래서 실제로 @Valid 애너테이션 때문에,  MethodArgumentNotValidException 예외가 출력되는 것이다 결론은, build.gradle에 spring-starter-validation 의존성이 빠져있었고, 그래도 배포 과정에서 알아차리지 못한 이유는, GlobalExceptionHandler에서 정의한 RuntimeException을 상속한 BuisinessException이 잘 감지되어서 에러 메시지를 반환하고 있었기에 몰랐던 것이다. 

그래서 해당 내용 수정후, ExceptionHandler에서 해당 예외 처리시 Defaultmessage만 제대로 출력되도록 변경하니, 정상적으로 동작했다.

참고 래퍼런스 : @NotNull 어노테이션 예외처리 핸들링 - 현구막 기술 블로그 (hyeon9mak.github.io)