PROJECT

[SpringBoot] Swagger v2.6.2 추가하기 with gradle

Terriermon 2022. 1. 31. 20:21

조금 고생이 많았던 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 추가하기...

 

꼭 버전을 확인해야 한다.