Swagger는 웹 서비스 개발의 RESTful API 명세를 자동으로 문서화 해주는 라이브러리이다. 근데 갑자기 Spring Boot 3 이전 버전에서는 잘 작동하던 설정 방식이 3 이후 버전에서는 제대로 작동하지 않았다.
아래와 같이 의존성 라이브러리를 추가했고, yml 파일 설정도 맞게 해주었다.
build.gradle
implementation("org.springdoc:springdoc-openapi-ui:1.6.11")
application.yml
springdoc:
default-consumes-media-type: application/json;charset=UTF-8
default-produces-media-type: application/json;charset=UTF-8
swagger-ui:
path: /swagger-ui.html
disable-swagger-default-url: true
display-request-duration: true
operations-sorter: alpha
SwaggerConfig 기본 설정
@Configuration
public class SwaggerConfig {
@Bean
public OpenAPI openAPI() {
return new OpenAPI()
.components(new Components())
.info(apiInfo());
}
private Info apiInfo() {
return new Info()
.title("Springdoc Test")
.description("Springdoc Swagger UI Test")
.version("1.0.0");
}
}
하지만 Swagger UI 접속 시 계속해서 404가 에러가 발생했다
원인을 찾아보니..
Spring Boot 3.x.x 이후 버전부터 Swagger를 사용할 때 기존의 라이브러리가 아닌 아래의 라이브러리를 의존성에 추가해줘야 한다.
Gradle
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'
Maven
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.0.2</version>
</dependency>
이와 같이 라이브러리를 수정해주었더니 제대로 화면이 작동하는 것을 확인할 수 있다.