Swagger报错:org.springframework.context.ApplicationContextException: Fai...和配置Swagger

简介
解决问题:org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException和配置Swagger

方法1

依赖配置:
<dependency>
 <groupId>io.springfox</groupId>
 <artifactId>springfox-swagger2</artifactId>
 <version>2.9.2</version>
</dependency>
<dependency>
 <groupId>io.springfox</groupId>
 <artifactId>springfox-swagger-ui</artifactId>
 <version>2.9.2</version>
</dependency>

报错在Swagger的配置文件下面,加上@EnableWebMvc注解

在Swagger的配置文件中添加@EnableWebMvc注解是为了明确开启Spring MVC的注解驱动配置,这样可以让Swagger更好地与Spring MVC集成,从而正确地生成API文档。具体分析如下:

  1. Swagger集成需求:Swagger需要与Spring MVC紧密集成,以便自动扫描和注册控制器中的RESTful接口。

  2. 启用MVC注解驱动:通过@EnableWebMvc,能够启用Spring MVC的注解驱动,这对于Swagger解析控制器中的注解非常重要。

  3. 影响自动配置:使用@EnableWebMvc会覆盖Spring Boot的自动配置,这可能需要人们手动配置一些原来由自动配置提供的设置。

  4. 配置静态资源处理:由于@EnableWebMvc会影响静态资源的处理,可能需要额外配置以正常提供静态资源。

综上所述,在Swagger的配置文件中使用@EnableWebMvc注解是为了确保Spring MVC的适当配置,以便Swagger可以正确读取和显示RESTful服务的文档信息。需要注意的是,这种配置方式可能会影响Spring Boot应用的某些自动配置行为,因此在使用过程中需要注意相应的配置调整。

方法2 

依赖配置:
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <version>2.0.7</version>
        </dependency>
配置代码:
package com.yupi.usercenter.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;

@Configuration
@EnableSwagger2WebMvc
public class SwaggerConfig {
    @Bean(value = "defaultApi2")
    public Docket defaultApi2() {
        return new Docket(DocumentationType.SWAGGER_2)
//                .host("localhost:8090")// 不配的话,默认当前项目端口
                .apiInfo(apiInfo())
                .pathMapping("/")
                .select() // 选择哪些路径和api会生成document
//                .apis(RequestHandlerSelectors.any())// 对所有api进行监控
                .apis(RequestHandlerSelectors.basePackage("com.itdz.controller"))// 选择监控的package
//                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))// 只监控有ApiOperation注解的接口
                //不显示错误的接口地址
                .paths(PathSelectors.any())
//                .paths(Predicates.not(PathSelectors.regex("/error.*")))//错误路径不监控
//                .paths(PathSelectors.regex("/.*"))// 对根下所有路径进行监控
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder().title("标题")
                .contact(new Contact("Hanstrovsky", "www.hanstrovsky.com", "Hanstrovsky@gmail.com"))
                .description("某某接口文档")
                .termsOfServiceUrl("NO terms of service")
//                .license("The Apache License, Version 2.0")
//                .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html")
                .version("1.0")
                .build();
    }
}

//访问地址 localhost:配置的端口号/api/doc.html

报错:如果springboot version >= 2.6.x,需要添加如下配置: 

spring:
    mvc:
        path-match:
            matching-strategy: ANT_PATH_MATCHER

### 回答1: org.springframework.context.ApplicationContextException: 无法启动bean documentationPluginsBootstrapper;嵌套异常是java.lang.NullPointerException。 这是一个Spring应用程序上下文异常,表明在启动bean documentationPluginsBootstrapper时出现了错误,具体原因是空指针异常。可能是因为缺少依赖或程序代码中存在bug导致的。 建议检查程序代码并确保所有必要的依赖都已正确配置。 ### 回答2: 这个错误是由于Spring框架中的ApplicationContext初始化过程中某个bean的启动失败所导致的。具体来说,是应用程序上下文中的documentationpluginsbootstrapper bean在启动时出现了问题。而这个问题的根源则是在于一个Java.lang.NullPointerException异常。 NullPointerException异常通常发生在应用程序中试图使用未初始化的变量或引用null对象时。在这种情况下,我们需要通过定位相关代码并进行调试来寻找错误的原因。 可能的情况是,documentationpluginsbootstrapper bean引用的某个依赖项没有被正确地初始化。或者,某个依赖项本身发生了NullPointerException异常,从而导致整个bean的启动失败。 为了解决这个问题,我们需要仔细分析异常堆栈跟踪信息,并检查documentationpluginsbootstrapper bean及其所有依赖项的代码实现。在检查过程中,我们需要注意到对象初始化和完整性检查,以及是否在使用之前检查变量和依赖关系是否为null。 当我们定位并修复了这个异常的根本原因后,我们可以重新启动应用程序并测试它是否能够正常工作。 ### 回答3: 这个错误信息通常在使用Spring框架时出现,它表示应用程序在启动时遇到问题,导致'documentationpluginsbootstrapper' bean无法启动,最终导致NullPointerException异常。 造成这个问题的原因可能有很多,其中包括: 1. 配置文件有误:在配置文件中可能有错误或缺失,例如某个bean缺少必要的属性或引用了不存在的依赖关系等。 2. 代码中存在错误:在代码中可能存在一些逻辑错误,导致bean无法正常启动。 3. 库文件版本不匹配:在使用Spring框架时,可能会由于库文件版本不匹配或不兼容而引起错误,例如与Spring版本不匹配的Hibernate库文件等。 要解决这个问题,可以尝试以下几种方法: 1. 检查配置文件:检查应用程序的配置文件是否正确,确保所有必要的bean属性都已配置正确。可以使用Spring自带的xml schema validation功能来检测配置文件的错误。 2. 检查代码:检查代码中是否存在逻辑错误,例如是否所有的依赖项都已正确初始化等。 3. 检查库文件版本:检查所有库文件的版本是否正确,并且是否与Spring框架版本兼容。 4. 重新构建应用程序:有时,重新构建应用程序可能会解决一些难以诊断的错误。可以尝试清除缓存并重新构建应用程序。 总之,要解决这个错误,需要找出错误的具体原因,并针对性地采取措施来解决它。在解决这个问题之后,需要仔细检查应用程序的其他部分,以确保没有其他问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值