赞
踩
完整代码在最后
一、报错
1.网页报错404
2.代码报错
No mapping for GET /swagger-ui.html
二、解决办法
1.版本回退
之前用的是swagger3.0.0和springboot3.0.6,始终没找到合适的解决办法,故将版本回退至swagger2.9.2和springboot2.7.11
2.Spring Boot 2.6.X后与Swagger有版本冲突问题,需要在application.properties文件中写入spring.mvc.pathmatch.matching-strategy=ant_path_matcher
3.重写父类方法
在SwaggerConfig配置类中继承WebMvcConfigurer,然后重写addResourceHandlers方法
public class SwaggerConfig 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/");
}
}
3.以上配置完亲测可用
小插曲:之前继承的是WebMvcConfigurationSupport,导致浏览器无法显示中文,我也是新手入门没搞懂为什么,换继承WebMvcConfigurer后完美解决。
三、完整代码
package com.example.bsdemo.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; //告诉Spring容器,这个类是一个配置类 @Configuration //启用Swagger2功能 @EnableSwagger2 public class SwaggerConfig 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/"); } // 配置Swagger2相关的bean @Bean public Docket createRestApi(){ return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com")) //com包下所有API都交给Swagger2管理 .paths(PathSelectors.any()).build(); } // 此处主要是API文档页面显示信息 private ApiInfo apiInfo(){ return new ApiInfoBuilder() .title("演示项目API") //标题 .description("学习Swagger2的演示项目") //描述 .version("1.0") //版本 .build(); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。