近來為了項目的接口文檔,而集成了swagger2,但是集成完畢后,訪問swagger-ui.html卻報404,檢查后發現,原來是被攔截了。下面寫一下我的解決方法。
首先新建 WebConfig類實現WebMvcConfigurer接口,WebMvcConfigurer接口實際上就是springBoot做攔擊的一個抽象的接口,在springBoot早期的版本,使用的是WebMvcConfigurerAdapter抽象父類進行管理權限。
在WebConfig類重寫addResourceHandlers方法,將不攔截的路徑放入。
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void configurePathMatch(PathMatchConfigurer pathMatchConfigurer) {
}
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer contentNegotiationConfigurer) {
}
@Override
public void configureAsyncSupport(AsyncSupportConfigurer asyncSupportConfigurer) {
}
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer defaultServletHandlerConfigurer) {
}
@Override
public void addFormatters(FormatterRegistry formatterRegistry) {
}
@Override
public void addInterceptors(InterceptorRegistry interceptorRegistry) {
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/statics/**").addResourceLocations("classpath:/statics/");
// 解決 SWAGGER 404報錯
registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
@Override
public void addCorsMappings(CorsRegistry corsRegistry) {
}
@Override
public void addViewControllers(ViewControllerRegistry viewControllerRegistry) {
}
@Override
public void configureViewResolvers(ViewResolverRegistry viewResolverRegistry) {
}
@Override
public void addArgumentResolvers(List list) {
}
@Override
public void addReturnValueHandlers(List list) {
}
@Override
public void configureMessageConverters(List> list) {
}
@Override
public void extendMessageConverters(List> converters) {
}
@Override
public void configureHandlerExceptionResolvers(List list) {
}
@Override
public void extendHandlerExceptionResolvers(List list) {
}
@Override
public Validator getValidator() {
return null;
}
@Override
public MessageCodesResolver getMessageCodesResolver() {
return null;
}
}
這樣就解決了無法訪問swagger-ui的問題了。