이번에 만난 오류는..
웹페이지로 test를 해보려 Swagger 접속주소(http://localhost:[사용포트번호]/swagger-ui.html)에 접근했는데
코드에도 문제가 없고, 심지어 콘솔에서도 오류가 없는데 안열리는 경우였다.
그럴 때는 코드 상의 오류가 아니라 설정 파일이 잘못 되었다는 것인데
swagger를 사용하기 위해서는
1. pom.xml에 의존성을 추가해야 한다.
<!-- Swagger2 -->
<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>
2. SwaggerConfiguration 파일을 만들어주어야 한다.
SwaggerConfiguration
package com.springboot.valid_exception.config.annotation;
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.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/** Swagger 환경 설정 **/
@Configuration // 환경(설정)에 관한 일을 함
@EnableSwagger2 // swagger를 활성화 시키겠습니다(enable)
public class SwaggerConfiguration {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.springboot.valid_exception"))
// 어디부터 어디까지 component-scan 역할
.paths(PathSelectors.any())
.build();
}
/** ui에 뿌려주는 부분 **/
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Spring Boot Open API Test with Swagger")
.description("설명")
.version("1.0.0")
.build();
}
}
그리고 특히나 여기 주의할 점은
Config파일 특성한 이전 프로젝트나 따로 정리해둔 코드를 그대로 사용하는 경우가 많은데
basePackage에서 설정한 패키지를 test하는 데 사용하므로 현재 사용 중인 프로젝트로 설정되어 있는지 꼭 확인하자!
필자는 이 부분이 문제였다..ㅎ