반응형
RestController 전역 예외처리를 위하여 @RestControllerAdvice를 적용하였다. 예외 타입 별로 리턴 메시지처리 등이 효율적으로 될 것 같아서 적용했는데 동작을 하지 않았다.
코드는 간단히 테스트용으로 아래와 같이 적용했다.
@Slf4j
@RestControllerAdvice
public class MyControllerAdvice {
@ExceptionHandler(MyException.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public String myExceptionHandler(Exception e) {
return "myexception";
}
@ExceptionHandler(NoHandlerFoundException.class)
@ResponseStatus(HttpStatus.NOT_FOUND)
public String NotFoundHandler(Exception e) {
return "404";
}
...
}
일단 package scan에서 제외되는지 basePackages 설정도 확인하고 기타 다른 설정들도 확인했는데 별다른 문제점은 찾지 못했다. 그러다가 spring 라이브러리 의존성을 확인하게 되었는데 그 부분에서 문제가 있었다.
현재 spring-boot-starter 버전을 2.5.5로 설정해놨는데 어떤 이유인지 모르겠지만 spring-webmvc 의존성이 별도로 선언되어 있었고 버전은 5.3.18로 되어 있었다.
implementation 'org.springframework.boot:spring-boot-starter-web:2.5.5'
...
implementation 'org.springframework:spring-webmvc:5.3.18'
...
결론적으로는 별도 선언된 spring-webmvc를 제거하니 @RestControllerAdvice가 잘 적용되었다.
위와 같이 spring boot 2.5.5로 선언한 경우 기본적으로 spring은 5.3.10을 사용하게 되어 있는데, spring-webmvc만 5.3.18이 적용되어 spring 내부적으로 처리할 때 클래스를 못찾거나 뭔가 꼬여서 문제가 발생한 것 같다.
위와 같이 의존성을 설정할 일은 없겠지만 혹시나 이것저것 다 찾아봤는데 뭔가 동작이 안된다면 라이브러리 의존성도 한번 체크해볼 필요가 있다.
반응형
'개발 > SpringBoot' 카테고리의 다른 글
SpringBoot Embedded Tomcat 세션 클러스터링 (0) | 2022.05.30 |
---|---|
SpringBoot @RestControllerAdvice를 통한 예외 처리 (0) | 2022.05.29 |
SpringBoot ResourceLoader 사용해서 classpath 파일 읽기 (0) | 2022.03.14 |
SpringBoot HikariCP 상태 log 보기 (0) | 2022.02.24 |
SpringBoot RestTemplate ResponseType에 Generic 설정 (0) | 2022.02.21 |
댓글