본문 바로가기
Tech Interview/프로젝트 일정 간단 기록

스프링 부트 3.X 버전 Swagger 도입시 생긴 오류

by Thinking 2023. 4. 21.

 프로젝트 진행시 Api 테스트를 위해 Postman을 자주 사용했었는데, 지난 프로젝트에서 Swagger를 사용하면서 굉장히 편리하다는 것을 깨달았다. 그래서 이번 프로젝트를 진행하면서 Swagger를 도입하려고 했으나!! 여러 문제점 때문에 2일 동안 골머리를 앓았다.

 

첫번째 저번과 똑같이 쓰면 되겠지, 하는 안일한 생각에 아래를 implementation 했는데 결과는...? 

 

 

 

 

 검색해보니 SpringBoot 3버전 이상에서는 2.6.1 버전의 swagger를 사용할 수 없었다. springfox swagger가 SpringBoot 3버전을 지원하지 않기 때문이다. 그래서 springdoc swagger를 사용해야 했고, 장점으로 별도의 configuration 설정 없이 사용이 가능했다.

 

 

아래처럼 추가를 해주면 동작이 되는줄 알았으나....

implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2")
implementation("org.springdoc:springdoc-openapi-starter-webmvc-api:2.0.2")

 

 

 jakarta.validation.NoProviderFoundException: Unable to create a Configuration, because no Jakarta Bean Validation provider could be found. Add a provider like Hibernate Validator (RI) to your classpath

위와 같은 에러 문구가 나왔다. 이건 또 모야...

 

 

 위 에러는 Bean Validation Provider dependency를 사용하여 해결하였다!! 그래서 최종적으로 SpringBoot 3.X 이상 버전에서는

아래 3가지만 추가해 준 후 http://localhost:8080/swagger-ui.html 로 접속을 해준다면?

(Swagger 관련 설정을 통해 위 주소가 아닌 다른 주소로 바꿔줄 수 있으나 그 부분에 대해서는 언급하지 않겠다.)

implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2")
implementation("org.springdoc:springdoc-openapi-starter-webmvc-api:2.0.2")
implementation("org.springframework.boot:spring-boot-starter-validation")

 

 

 드디어 Swagger API 명세서를 볼 수 있었다. 이 부분 때문에 버전 관련해서 추가적인 오류에 대해 대처 방법을 알 수 있어서 좋았다. 하지만 시간을 많이 허비해 다른분들은 이 글을 통해 빠르게 설정해 나아갔으면 하는 바람에 글을 쓰게 되었다!!