King of Stock
[swagger2] Whitelabel Error Page 본문
Pet 프로젝트에 swagger를 적용하기 위해서 관련 설정을 검색(구글링)하여 한국 블로그 내용을 기준으로 적용을 해보았다.
애플리케이션을 기동하고 http://localhost:8080/swagger-ui.html 접속하니...
위와 같이 잘(?) 만들어진 에러 페이지가 응답으로 왔다. 로그를 보니 No mapping for GET /swagger-ui.html
WARN 레벨의 로그가 아래와 같이 발생했다.
2019-07-06 12:44:47.556 INFO 2272 --- [)-192.168.100.4] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2019-07-06 12:44:47.556 INFO 2272 --- [)-192.168.100.4] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2019-07-06 12:44:47.572 INFO 2272 --- [)-192.168.100.4] o.s.web.servlet.DispatcherServlet : Completed initialization in 16 ms
2019-07-06 12:44:59.093 WARN 2272 --- [nio-8080-exec-1] o.s.web.servlet.PageNotFound : No mapping for GET /swagger-ui.html
위에 응답은 application.yml에서 다음과 같이 설정되어 있으면 HTTP Status 404 – Not Found
응답이 브라우저에 보일 것이다.
server:
port: ${PORT:8080}
error:
whitelabel:
enabled: false
관련 내용을 다시 검색하여 확인해보니 다음과 같은 리소스를 등록하는 설정을 하지 않아 발생하는 현상이였다. 다음과 같이 리소스를 등록하는 설정을 통해서 문제를 해결하였다.
@Configuration
@EnableAsync
@EnableWebMvc
@EnableSwagger2
public class WebMvcConfiguration implements WebMvcConfigurer {
// ... 중략 ...
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
@Bean
public Docket swagger() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}
위의 추가한 설정으로 다시 애플리케이션을 기동하면...
휴... ㅋ
'IT 기술' 카테고리의 다른 글
[Kubernetes] StatefulSet podAntiAffinity (0) | 2019.08.03 |
---|---|
[test] TestRestTemplate (0) | 2019.07.07 |
JPA Auditing (0) | 2019.06.23 |
[PostgreSQL] Postgresql DB 생성 on Mac (0) | 2019.04.27 |
[IntelliJ IDE] 인텔리J 구동이 안된 경험 (0) | 2019.04.09 |
Comments