티스토리 뷰
반응형
Spring Boot 2.6.7을 사용 중인데 Swagger 3을 설정하다보니 자꾸 제대로 안된다.
구글링을 해보니 스프링부트 2.6.x 버전에선 스웨거 3.x.x 호환에 문제가 있다는 정보들이 많았다.
설정 하는데 삽질 몇번 해보고 까먹을까봐 포스팅해둔다.
우선 Gradle에 의존성을 추가한다. Swagger에서 사용하는 라이브러리가 다 포함되어 있다.
dependencies {
implementation("io.springfox:springfox-boot-starter:3.0.0")
}
그런 다음 아까 위에서 말한 Spring Boot 2.6.x 버전과 Swagger 3.x.x 버전 사이의 호환을 위해
application.yml이나 application.properties 설정 파일에 아래와 같이 추가해줘야 한다.
이렇게 Spring Boot에서의 설정이 변경되어 호환에 이슈가 발생하였다고 한다.
spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
그런 다음 이제 Swagger Config 클래스를 작성해준다.
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import springfox.documentation.builders.ApiInfoBuilder
import springfox.documentation.builders.PathSelectors
import springfox.documentation.builders.RequestHandlerSelectors
import springfox.documentation.service.ApiInfo
import springfox.documentation.service.Contact
import springfox.documentation.spi.DocumentationType
import springfox.documentation.spring.web.plugins.Docket
@Configuration
class SwaggerConfig {
@Bean
fun api(): Docket {
return Docket(DocumentationType.SWAGGER_2)
.useDefaultResponseMessages(false)
.select()
.apis(RequestHandlerSelectors.basePackage("kr.janeshop.apis.web.v1"))
.paths(PathSelectors.ant("/v1/**"))
.build()
.apiInfo(this.apiInfo())
}
private fun apiInfo(): ApiInfo {
return ApiInfoBuilder()
.title("JANE SHOP API")
.description("JANE SHOP API")
.version("1.0")
.contact(
Contact(
"JANE SHOP",
"https://www.janeshop.kr",
"help@janeshop.kr"
)
)
.build()
}
}
- apis(RequestHandlerSelectors.basePackage("kr.janeshop.apis.web.v1")) : API 문서화를 할 특정 패키지를 지정
- paths(PathSelectors.ant("/v1/**")) : apis 중 특정 조건만 지정
Swagger UI에 접속하는 방법은 3.x.x 버전인 경우에 http://localhost:8080/swagger-ui/ 해야한다.
(참고 : https://velog.io/@dkatlf900/swagger)
반응형