集成swagger后出现Failed to start bean 'documentationPluginsBootstrapper'


SpringBoot集成swagger后出现Failed to start bean ‘documentationPluginsBootstrapper’; nested exception is java.lang.NullPointerException
之前就出现过创建SpringBoot项目集成swagger问题,今天又遇到了,就来写一下提供一下几种解决办法。

1、bug重现
当前遇到报错的环境是:SpringBoot版本为2.7.8,集成的swagger版本为2.9.2(最新版本已经更新到3.0.0了)

	//SpringBoot版本号
	<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.8</version>
    </parent>
    
	//swagger2 版本号
	<dependency>
       <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.9.2</version>
    </dependency>

2、报错原因分析
SpringBoot 2.6及以上版本做了迭代,Spring Boot 2.6.X使用的是PathPatternMatcher,而Springfox 使用的路径匹配是基于AntPathMatcher的。

3、解决方案
①方案一:更改Spring Boot 版本到2.6.x以下版本

Spring Boot版本 Swagger 版本
2.5.6 2.9.2
2.3.12.RELEASE 2.9.2
之前创建项目时,为了项目包不冲突,创建的SpringBoot版本是 2.3.12.RELEASE,集成的swagger版本是2.9.2,这样的搭配是没有问题的。
	//SpringBoot版本号
	<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.12.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

	//swagger2 版本号
	<dependency>
       <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.9.2</version>
    </dependency>

②方案二:不更改Spring Boot 版本

Spring Boot版本 Swagger 版本
2.5.6 3.0.0
2.7.8 2.9.2
第一种组合:我是借鉴网友:https://blog.csdn.net/cxclll/article/details/126745903
但我发现里面有一个类引不进来(不知道是不是我环境的原因),出于懒,我就想到了一个折中的方法,下面讲。

新增类引用不上

第二种组合是:
当前项目 SpringBoot 版本是2.7.8,集成的 swagger 版本是2.7.0的版本。
swagger 2.7版本跟最新的也就是样式和交互上的区别,2.9.2 要更扁平化一些。
	//SpringBoot版本号
	<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.8</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

	//swagger2 版本号
	<dependency>
       <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.7.0</version>
    </dependency>
然后在项目的resource目录下的 *.yaml 文件中加上:

spring.mvc.pathmatch.matching-strategy: ant_path_matcher

现在 Springboot 和 SpringCloud 的配置文件大多都是yaml文件,用上面这种输入可以自动匹配格式。
Logo

一站式 AI 云服务平台

更多推荐