SpringBoot整合Swagger踩坑-项目启动报错与swagger-ui.html请求404无法访问

SpringBoot整合Swagger踩坑-项目启动报错与swagger-ui请求404无法访问

项目依赖与配置

依赖

常见依赖接入方式如下:

<dependency>
	<groupId>io.springfox</groupId>
	<artifactId>springfox-swagger2</artifactId>
	<version>3.0.0</version>
</dependency>
<dependency>
	<groupId>io.springfox</groupId>
	<artifactId>springfox-swagger-ui</artifactId>
	<version>3.0.0</version>
</dependency>

springfox推荐依赖接入方式如下:

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>

建议使用推荐的方式,可以协助我们解决404异常的问题。

配置

依赖导入完成后创建SwaggerConfig.java配置:

@Configuration
@EnableSwagger2//启用Swagger2
public class SwaggerConfig {

}

启动项目报错

报错信息:

org.springframework.context.ApplicationContextException: Failed to start bean ‘documentationPluginsBootstrapper’; nested exception is java.lang.NullPointerException
at ……
Caused by: java.lang.NullPointerException: null
at ……
… 14 common frames omitted

错误原因:SpringBoot2.6.x使用PathPatternMatcher匹配路径,Swagger引用的Springfox基于AntPathMatcher匹配路径。匹配方式不同,导致错误。

解决思路:将SpringBoot的匹配路径方式更改为AntPathMatcher,两者相同即可。添加配置信息如下:

spring.mvc.pathmatch.matching-strategy=ANT_PATH_MATCHER

重新启动项目成功。

访问默认路径http://localhost:8080/swagger-ui.html 404异常

资源无法访问原因:seagger信息被拦截,自定义WebMvcConfigurer解决即可。

@Configuration
public class WebConfig implements WebMvcConfigurer {

    /**
     * 添加静态资源处理器
     * @param registry
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/swagger-ui/**").addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/").resourceChain(false);
    }

    /**
     * 添加视图控制器
     * @param registry
     */
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/swagger-ui/").setViewName("/swagger-ui/index.html");
    }
}

访问http://localhost:8080/swagger-ui/index.html即可看到页面如下:
请添加图片描述
如果没有按照springfox推荐的依赖接入方式,会看到如下界面:
请添加图片描述
该页面为未启用swagger时,访问swagger的结果。swagger的配置在此不多做讨论。


版权声明:本文为qq_41980872原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。