SpringBoot 集成 knife4j (Swagger2)
前提 :本文 spring boot版本為 2.6.1 ,knife4j 版本為:3.0.3
1、初始化項目,導入pom依賴
<!-- https://mvnrepository.com/artifact/com.github.xiaoymin/knife4j-spring-boot-starter -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
2、創建Swagger配置類
@Configuration
public class Swagger2Config {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(this.apiInfo())
.select()
// 這里可以指定掃描包的路徑 或者 掃描指定的注解
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.paths(PathSelectors.any())
.build().protocols(this.newHashSet("https","http"));
}
@SafeVarargs
private final <T> Set<T> newHashSet(T... ts) {
return ts.length > 0 ? new LinkedHashSet(Arrays.asList(ts)) : null;
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Swagger接口文檔")
.description("文檔描述")
.contact( new Contact("xmStudy","https://www.cnblogs.com/XiaoMingStudy1/","123@qq.com"))
.termsOfServiceUrl("")
.version("1.0")
.build();
}
}
最終項目結構圖如下:

3、出現的問題
項目啟動失敗

4、解決問題
原因分析:在springboot 2.6.0會提示documentationPluginsBootstrapper NullPointerException,具體位置的WebMvcPatternsRequestConditionWrapper中的condition為null。原因是在springboot2.6.0中將SpringMVC 默認路徑匹配策略從AntPathMatcher 更改為PathPatternParser,導致出錯,解決辦法是切換會原先的AntPathMatcher
解決問題:在properties中加上spring.mvc.pathmatch.matching-strategy=ant-path-matcher
5、項目正常啟動,訪問一下
ip為 ip:port/doc.html, 如 http://localhost:8080/doc.html#/home

