SpringBoot2.7.x整合Swagger2 时,出现
org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException``
原因是因为springboot2.6.x后与swagger2 3.0.0出现冲突
解决办法:
在Swagger配置类继承WebMvcConfigurationSupport类
@Configuration
@EnableSwagger2
public class SwaggerConfig extends WebMvcConfigurationSupport{
......
......
}
另外需要注意的是,继承了WebMvcConfigurationSupport类后,spring会找不到资源,可以启动测试
项目启动后,访问http://localhost:8080/swagger-ui.html
控制台有如下信息:
14:09:34 WARN No mapping for GET /emos-wx-api/swagger-ui.html
所以还需在配置类中添加匹配静态资源的方法:
@Configuration
@EnableSwagger2
public class SwaggerConfig extends WebMvcConfigurationSupport{
......
......
/**
* 发现如果继承了WebMvcConfigurationSupport,则在yml中配置的相关内容会失效。 需要重新指定静态资源
*
* @param registry
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**")
.addResourceLocations("classpath:/static/");
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
super.addResourceHandlers(registry);
}
}
现在启动时访问即可返回swagger页面
参考:
http://t.csdn.cn/BZzvi