조금 고생이 많았던 Springboot에 Swagger 추가하기
무턱대고 아무 블로그를 들어가서 Swagger를 추가하면 왜 안되지?? 현상을 겪을 수 있다.
그래서 사전에 반드시 체크하고 들어가야 하는 항목이 있다.
1. 어떤 버전의 SpringBoot를 사용하는 지
🍀 해당 글은 SpringBoot 2.6.3 버전을 사용했다.
2. 어떤 버전의 Swagger를 추가할 것인지
🍀 해당 글은 Swagger 2.6.2 버전을 사용했다. SpringBoot 2.6.3은 Swager 3.0.0 ~ 이후 버전과 호환이 되지 않았다.
이 두 개를 반드시 체크해야 한다. 추가적으로 SwaggerConfig도 확인하면 좋다.
1. Gradle에 Swaager 추가하기
📁 build.gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web:2.6.3'
implementation 'com.android.support:appcompat-v7:28.0.0'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
implementation 'org.springframework.boot:spring-boot-starter-test:2.6.3'
implementation group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2'
implementation group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2'
}
allprojects{
repositories{
jcenter()
google()
}
}
1. dependencies에 swagger 의존성 2가지를 추가해준다.
//swagger 기능 추가
implementation group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2'
//swagger ui 추가
implementation group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2'
2. allprojects에 repositories 추가
- 해당 내용을 추가하지 않으면 build가 되지 않는다.
2. SwaggerConfig 생성
폴더를 만들어서 config.swagger 밑에 SwaggerConfig를 생성했다.
다양한 SwaggerConfig를 생성할 수 있는 데, 모든 조건을 열어두는 방향으로 생성했다.
path등을 잘못 적어서 일부를 막아둔다면 큰 오류를 겪을 수 있다.
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}
- Type은 Swagger2 버전이므로 SWAGGER_2로 고정시켜준다.
- apis와 paths는 any로 둔다.
3. 패키지 충돌로 인한 오류가 발생했을 때
에러 상황
Caused by: java.lang.NullPointerException: null
해당 에러가 발생하여 main에서 오류를 쫓아가면 밑 에러를 확인할 수 있다.
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2022-01-31 20:16:49.779 ERROR 2245 --- [ main] o.s.boot.SpringApplication : Application run failed
org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException
이유는 여러 패키지로 인해 오류가 발생한 상황이다. 따라서 아래 application.yml을 추가해주면 된다.
📁 application.yml
spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
참고: https://www.inflearn.com/questions/230160
4. 실행
🔗 http://localhost:8081/swagger-ui.html
- swagger2는 swagger-ui.html이 스웨거 작동 링크이다.
에러가 끝없이 발생해서 정말 오랜 시간 문제를 겪은 Swagger 추가하기...
꼭 버전을 확인해야 한다.
'PROJECT' 카테고리의 다른 글
[SpringBoot] Spring Boot 3.0.0 버전 설정 (0) | 2022.02.20 |
---|---|
[Vue.js] 백엔드/프론트엔드 연결하기 with axios (0) | 2022.02.02 |
[SpringBoot] 열리는 Port 변경하기 (0) | 2022.01.24 |
[SpringBoot] Spring Initializr로 스프링부트 실행하기 (0) | 2022.01.23 |
[Vue.js] Vue.js 설치 (feat. MacOS) (0) | 2022.01.17 |