<학습내용>
- 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()
세팅을 하는 것이 정말 쉽지 않음을 느낄 수 있었다...
'스파르타 내일배움 캠프 > 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 |