티스토리 뷰
지난번에 Springdoc 사용법 이래가지고 글도 쓰고 이렇게 쓰면 잘 된다고 했었다. 지금도 프로젝트 새로 만들어서 전에 썼던 글대로 진행을 하면 잘 된다. 하지만 이미 개발이 완료된 어떤 프로젝트가 있었는데 여기에 Springdoc을 적용하려 하니 위와 같은 문제가 발생한다.
[WARN ][org.springframework.web.servlet.PageNotFound.noHandlerFound:line1275] - No mapping for GET /swagger-ui/index.html
다 안되는건 아니다. swagger-ui 관련된 기능만 안된다.
http://localhost:8080/v3/api-docs/swagger-config -> 200 OK
http://localhost:8080/v3/api-docs -> 200 OK
http://localhost:8080/swagger-ui.html -> 302 -> http://localhost:8080/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config -> 404 Not found.
이렇게 api-docs 관련된 api 호출은 잘 되는데 swagger-ui 화면을 보고 싶은데 이 경우가 잘 안된다.
자원들을 가져오지 못하는것 같다. 그럼 새로 만들어서 swagger만 적용한 프로젝트는 왜 잘 될까?
한참의 삽질 끝에 정확하진 않지만 어렴풋이 답을 얻을 수 있었다.
원인은 바로 흔히 WebConfig 라고 하는 Web 설정에 문제가 있었다. 필자의 설정은 다음과 같다.
@Configuration
public class WebConfig extends WebMvcConfigurationSupport {
WebMvcConfigurationSupport 를 extends 하여 interceptor라던지 argumentResolver와 같은 설정을 하는데 이는 swagger-ui 와 호환되지 않는다는게 잠정적으로 내린 결론이다. 위와 같은 WebConfig를 만들지 않은 순수한 Springboot 프로젝트에서는 swagger-ui가 잘 되는 이유이기도 하다.
WebMvcConfigurationSupport 를 extends 하는 설정 방식은 그럼 버려야 하나? swagger-ui의 자원을 가져올 수 있도록 설정을 해주면 된다.
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/swagger-ui/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/swagger-ui/3.52.5/");
}
이런 설정을 WebConfig 안에 넣어준다. 여기서 3.52.5는 swagger-ui의 버전이다. maven dependency 에서 확인할 수 있다.
그럼 된다... 다른 방법도 있다. 바로 WebMvcConfigurationSupport 를 extends 하지 않고 다음과 같이 하면 된다.
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter{
하지만 이건 springboot 조금 최신 버전을 써보면 알겠지만 deprecated 되었다. 기능적으로는 돌아가도 나중을 위해 WebMvcConfigurerAdapter 사용을 하지 말고 위처럼 WebMvcConfigurationSupport 를 extends 하여 addResourceHandlers 에 추가해서 사용하도록 하자.
끝!
'Framework > Spring' 카테고리의 다른 글
Springboot Connection Pool 설정방법 (0) | 2021.11.11 |
---|---|
[Springdoc] swagger Unable to render this definition 오류 조치 (0) | 2021.11.03 |
Springboot Session Timeout 설정하기 (0) | 2021.10.26 |
Spring vs Springboot 주요 차이점 (1) | 2021.10.13 |
Springboot 속도 개선 방법 (0) | 2021.10.07 |