본문 바로가기

이슈

[트러블 슈팅] spring swagger 버전 이슈 ControllerAdviceBean

문제. Spring 에서 Swagger 사용시 500에러 발생 

Spring에서 swagger를 다운 받아서 사용하려하였으나 아래와 같이 에러 발생

[Handler dispatch failed: java.lang.NoSuchMethodError:
'void org.springframework.web.method.ControllerAdviceBean.
<init>(java.lang.Object)'] with root cause

 

원인.

조금 찾아보니 에러핸들링을 위해 사용한 @RestControllerAdvice와 함께 사용해서 충돌이 발생 했다고 한다.

그래서 주석을 하고 돌려보면 잘 동작 하는것을 확인했는데 이건 올바른 해결 방법이 아니라고 생각 했습니다.

 

조금 더 구글링을 해보니. 아래와 같은 글을 찾을 수 있었습니다.

 

현재 저의 Spring boot 버전은 4.0.2 이고 추가한 swagger 의존성은 2.6.0 이었습니다.

 

해결.

swagger 버전은 2.7.0으로 올려주어서 해결하였습니다.

    implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.7.0'

 

추가로 RestControllerAdvice 에 basePackage 옵션을 주면 해결 된다는 얘기도 있는데, 저는 설정해줘도 동일한 이슈가 발생하여 버전 수정으로 해결하였습니다.

@RestControllerAdvice(basePackages = {"sparta.scheduler.controller"})

참고자료.

 

[트러블슈팅] Swagger 500 에러: Failed to load API definition

🐛이슈- 발생한 오류 copy & paste- 오류가 발생한 상황 간략히 설명각자 API를 구현하던 중 팀원분이 [응답 통일 및 에러 핸들러]를 구현해서 PR을 올려주셨다. API 역할 분배할 때 되도록이면 엔티티

dev-meung.tistory.com