Spring Data REST에 Swagger를 추가하면 spring-plugin-core-1.2.0.RELEASE.jar
파일에 대한 충돌 문제가 발생합니다. 이 문제는 Swagger의 버전이 낮아서 생기는 문제이긴 하나 현재 Swagger 3.0 Snapshot 버전을 통해서 해결할 수 있습니다.
우선 이 문제를 해결하기 위해서 Maven POM에 다음의 Repository를 추가합니다.
<repositories> <repository> <id>jcenter-snapshots</id> <name>jcenter</name> <url>http://oss.jfrog.org/artifactory/oss-snapshot-local/</url> </repository> </repositories>
그리고 난 후 다음과 같이 Swagger Snapshot 버전을 Maven POM에 추가합니다.
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>3.0.0-SNAPSHOT</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>3.0.0-SNAPSHOT</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-data-rest</artifactId> <version>3.0.0-SNAPSHOT</version> </dependency>
이제 Spring Boot Configuration에 다음을 추가합니다. 참고로 버전업이 되면서 Annotation 명이 @EnableSwagger2WebMvc
으로 변경되었습니다.
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.data.rest.configuration.SpringDataRestConfiguration; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc; @Configuration @EnableSwagger2WebMvc @Import(SpringDataRestConfiguration.class) public class SwaggerConfig { @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.any()) .paths(PathSelectors.any()).build(); } }
이제 Spring Boot Application을 실행하고 http://localhost:8080/swagger-ui.html로 접속해봅니다.