前段时间搞SpringCloud,在配置swagger时遇到一个坑。曾一度认为是SpringCloud与swagger版本兼容问题。下面简单叙述一下此次事件。
首先是出现这个报错,很常见的资源找不到的问题:

2018-10-22 11:34:55 [http-nio-8084-exec-2] WARN org.springframework.web.servlet.DispatcherServlet:1205 org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/swagger-ui.html] in DispatcherServlet with name 'dispatcherServlet'
然后添加这么一段代码:
@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/");
}
依然是资源找不到,打断点后发现,添加的这段代码在初始化时,根本不会执行!!!然后就开始各种调试了。
最后说一下结论:
那段代码

在配置SpringCloud的Swagger时遇到资源找不到的问题,发现添加的配置代码在初始化时不执行。解决方法是正确选择使用WebMvcConfigurationSupport、WebMvcConfigurerAdapter或WebMvcConfigurer接口。WebMvcConfigurationSupport内容丰富但可能导致冲突,WebMvcConfigurerAdapter已被弃用,而WebMvcConfigurer需确保全局唯一性,重写addResourceHandlers方法时需注意避免冲突。
最低0.47元/天 解锁文章
246

被折叠的 条评论
为什么被折叠?



