org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException
## 一、报错信息
org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException
具体报错信息如下:
## 二、报错原因
SpringBoot2.6.x与Swagger2 3.0.0版本冲突原因。
## 三、 解决方案
方案一:
将SpringBoot版本降低到2.6以下。
方案二:
- 在application.yml中添加以下配置:
Swagger配置类
如上,更改SpringMVC处理程序映射匹配请求路径策略为ant_path_matcher不起作用,可以Spring容器中注册一个BeanPostProcessor,在postProcessAfterInitialization中修改WebMvcRequestHandlerProvider中的handlerMappings属性。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | @Configuration @EnableOpenApi @Slf4j public class SwaggerConfig implements ApplicationListener<WebServerInitializedEvent> { @Bean public Docket createRestApi(){ return new Docket(DocumentationType.SWAGGER_2) .apiInfo(getApiInfo()) .pathMapping( "/" ) .select() .apis(RequestHandlerSelectors.basePackage( "com.www.wen" )) .paths(PathSelectors.any()) .build(); } public ApiInfo getApiInfo(){ return new ApiInfoBuilder() .title( "xxx应用平台" ) // 文档标题 .description( "xxx应用平台文档描述" ) // 文档描述 .termsOfServiceUrl( "http://www.baidu.com" ) .version( "1.0" ) .build(); } /** * 解决SpringBoot和Swagger2冲突 * * @return */ @Bean public static BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() { return new BeanPostProcessor() { @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { if (bean instanceof WebMvcRequestHandlerProvider || bean instanceof WebFluxRequestHandlerProvider) { customizeSpringfoxHandlerMappings(getHandlerMappings(bean)); } return bean; } private <T extends RequestMappingInfoHandlerMapping> void customizeSpringfoxHandlerMappings(List<T> mappings) { List<T> copy = mappings.stream() .filter(mapping -> mapping.getPatternParser() == null ) .collect(Collectors.toList()); mappings.clear(); mappings.addAll(copy); } @SuppressWarnings ( "unchecked" ) private List<RequestMappingInfoHandlerMapping> getHandlerMappings(Object bean) { try { Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings" ); field.setAccessible( true ); return (List<RequestMappingInfoHandlerMapping>) field.get(bean); } catch (IllegalArgumentException | IllegalAccessException e) { log.warn( "修改WebMvcRequestHandlerProvider的属性:handlerMappings出错,可能导致swagger不可用" , e); throw new IllegalStateException(e); } } }; } } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
· 数据并发安全校验处理工具类
2022-08-13 ObjectMapper使用详细介绍