인프런의 'Spring Boot를 이용한 RESTful Web Services 개발'의 강의 중 REST API Documentation을 위한 Swagger에서 버전 문제로 인한 이슈를 해결한 방법에 대해 얘기하고자 한다.
1. 문제 발생 🤬
강의에서는 Springfox Swagger를 사용한다.
porm.xml - Dependency
1 2 3 4 5 6 7 8 9 10 | <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency> | cs |
SwaggerConfig Class
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | @Configuration //@EnableSwagger2 @OpenAPIDefinition public class SwaggerConfig { @Bean public Docket DocumentApi(){ return new Docket(DocumentationType.SWAGGER_2); } } | cs |
위와 같은 설정에서 정상적으로 동작하지 않았고 찾아본 결과 Springfox Swagger는 Springboot 2.7.X 이하의 버전에서만 가능하다고 한다. (나는 Springboot 3.0.0을 사용하고 있었다.)
2. 문제 해결 😁
검색해보니 Springboot 3.x 버전부터는 Springfox Swagger가 아닌 Springdoc로 구현한다고 한다.
porm.xml - Dependency
1 2 3 4 5 6 7 8 9 10 11 | <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>2.0.2</version> </dependency> <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-ui</artifactId> <version>1.6.9</version> </dependency> | cs |
SwaggerConfig Class
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | @Configuration //@EnableSwagger2 @OpenAPIDefinition public class SwaggerConfig { @Bean public OpenAPI api(){ Info info = new Info().title("").version("v3").description("aaa"); return new OpenAPI().components(new Components()).info(info); } } | cs |
http://localhost:8088/swagger-ui/index.html#/
http://localhost:8088/v3/api-docs
정상적으로 동작하는 것을 확인할 수 있다!
요약 👉 Springboot 2.7.x 이하는 Springfox Swagger를, Springboot 3.x부터는 Springdoc를 사용하자!
반응형