스파르타 내일배움 캠프/Today I Learned

'22.07.27 Today I Learned

hyunzxn 2022. 7. 28. 09:50

<학습내용>

- Swagger 적용해보기!

 


 

1. Swagger 적용해보기!

 

이 글에선 2.9.2 버전으로 진행한 것을 적고자 한다

 

 

1️⃣ 디펜던시 추가

 

implementation group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2'
implementation group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2'

 

두 가지 디펜던시를 build.gradle에 추가해준다.

 

 

2️⃣ SwaggerConfig 파일 작성

 

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket restAPI() {
        return new Docket(DocumentationType.SWAGGER_2)
                .useDefaultResponseMessages(false)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.teamharmony.newscommunity"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("Harmony Swagger")
                .version("1.0.0")
                .description("Team Harmony의 swagger-ui 입니다.")
                .build();
    }
}

 

 

여기까지 작성하고 서버를 실행한 다음 localhost:포트번호/swagger-ui.html 로 접속을 하면 swagger-ui 화면이 나와야 하는데 서버가 자동으로 죽어버리면서 정상적으로 작동하지 않았다. 

 

이유:

Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException" 

 

3️⃣ 에러 해결법

 

다음과 같은 코드를 추가해준다.

 

- application.properties 사용하는 경우

spring.mvc.pathmatch.matching-strategy = ANT_PATH_MATCHER

 

- application.yml 사용하는 경우

spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

 

 

 

여기까지 하고나서 될 줄 알았는데 그래도 되지 않았다. 여기서 삽질을 정말 오랫동안 하다가 결국 해결책을 알아냈다.

 

 

4️⃣ 안 됐던 이유 해결

 

implementation 'org.springframework.boot:spring-boot-starter-actuator'

 

배포를 위해서 추가해놨던 디펜던시인데 이거 때문에 충돌이 나면서 정상적으로 되지 않는 것이었다. 이걸 삭제해주니까 아주 정상적으로 작동됐다.

 

 

✅ Spring Security 사용하는 경우

 

SecutiryConfig 파일에 다음과 같은 코드를 추가해준다.

 

.antMatchers("/v2/api-docs", "/swagger-resources/**", "/swagger-ui.html","/swagger-ui/**").permitAll()

 

 

세팅을 하는 것이 정말 쉽지 않음을 느낄 수 있었다...

 

 

728x90

'스파르타 내일배움 캠프 > Today I Learned' 카테고리의 다른 글

'22.07.29 Today I Learned  (0) 2022.07.29
'22.07.28 Today I Learned  (0) 2022.07.28
'22.07.26 Today I Learned  (0) 2022.07.26
'22.07.25 Today I Learned  (0) 2022.07.25
'22.07.22 Today I Learned  (0) 2022.07.23