首页 > 编程语言 >org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPlu

org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPlu

时间:2023-08-13 16:47:24浏览次数:49  
标签:lang exception return mappings List bean new java public

##     一、报错信息
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属性。

@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);
                }
            }
        };
    }
}

 

标签:lang,exception,return,mappings,List,bean,new,java,public
From: https://www.cnblogs.com/javaxubo/p/17626752.html

相关文章

  • 【Java】智慧工地管理平台源码
    智慧工地是聚焦工程施工现场,紧紧围绕人、机、料、法、环等关键要素,综合运用物联网、云计算、大数据、移动计算和智能设备等软硬件信息技术,与施工生产过程相融合。一、什么是智慧工地智慧工地是指利用移动互联、物联网、智能算法、地理信息系统、大数据挖掘分析等信息技术,提高项目......
  • 【Java】美团8.12笔试复盘
    5道编程题2小时如果您看到哪里有问题,万望评论区指正,在此谢过!!!第一题:数组遍历importjava.util.Scanner;publicclassNextNumbers{/*题目:给你一个排列和两个数问你:这两个数在排列里是不是相邻输入:第一行:n代表排列中数的个数第二行:a1--an......
  • java中基本数据类型
    Java中的基本数据类型包括以下八种:整数类型:byte:占用1个字节,取值范围为-128到127。short:占用2个字节,取值范围为-32768到32767。int:占用4个字节,取值范围为-2147483648到2147483647。long:占用8个字节,取值范围为-9223372036854775808到9223372036854775807。浮点数类型:float:占用4个字节......
  • How to use Javascript JSON.stringify similar method in Python All In One
    HowtouseJavascriptJSON.stringifysimilarmethodinPythonAllInOne如何在Python中使用类似JavaScriptJSON.stringify的方法应用场景比较两个数组(列表)对象是否相等/comparestwoarray(list)objectsforequality//jsarr1=[1,2,3]arr2=[1,2,3]......
  • JavaScript之循环及其案例
    1循环循环的目的在实际问题中,有许多具有规律性重复性操作,因此在程序中要完成这类操作就需要重复执行某些语句。1.1JS中的循环在JS中,主要有三种类型的循环语句:for循环while循环do...while循环2for循环在程序中,一组被重复执行的语句被称之为循环体,能否继续重复执行,取决于循环的终......
  • JavaScript基础知识
    JavaScript基础知识1、简介1、javascript是一面向对象的解释型语言,是实现动态前端页面的,它是基于对象和事件驱动并具有相对安全性的客户端脚本语言。它的主要目的是,验证发往服务器端的数据、增加Web互动、加强用户体验度。2、javascript体系由ECMAScript、DOM、BOM组成。2、......
  • 理解 Java 方法调用
    总结自:《Java核心技术第10版(套装共2册)-凯S.霍斯特曼霍斯特曼科内尔》下面假设要调用x.f(args),隐式参数x[1]声明为类C的一个引用。下面是调用过程的详细描述:1)编译器查看对象的声明类型和方法名。假设调用x.f(param),且隐式参数x声明为C类的对象。需要注意的是......
  • java.lang.NoSuchMethodError: com.baomidou.mybatisplus.core.toolkit.StringUtils.i
    1、原因这是由于两个版本不一致导致的;<!--mybatis-plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version&......
  • 【Quarkus技术系列】「云原生架构体系」在云原生时代下的Java“拯救者”是Quarkus,那云
    推荐超值课程:点击获取云原生时代下的Java"拯救者"在云原生时代,其实Java程序是有很大的劣势的,以最流行的springboot/springcloud微服务框架为例,启动一个已经优化好,很多bean需要lazyload的application至少需要3-4秒时间,内存需要几百M,业务逻辑稍微复杂一点点,没有1G以上的内存是......
  • Java| jdk的src源码目录讲解
    JavaJDK的源代码目录(src)包含了Java核心类库的源代码,它提供了Java编程语言的基本功能和类。src目录结构通常按照包的层次结构组织,每个包对应一个文件夹,而每个类则在相应的包文件夹中以.java文件的形式存在。目录结构-com--sun-java--applet--awt--beans--io--lang--mat......