Failed to start bean ‘documentationPluginsBootstrapper‘; nested exception is java.lang.NullPointerEx

Spring Boot2.7.2整合Swagger

整合Swagger2.9.2

写这篇博客的原因是因为最近在写一个小demo遇到的问题,SpringBoot2.7.2版本在整合Swagger2.9.2(比较经典的一个版本)时报错了,百度了一下解决办法就是降低Spring Boot版本至2.6.X版本以下,如果不想降低Spring Boot版本的可以和我这样做,非常简单:

1、添加Swagger2依赖

在pom.xml文件中加入以下依赖。

        <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>

2、创建Swagger2的Java配置类

import io.swagger.annotations.Api;
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.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * @author SLQ1893
 * http://localhost:8080/swagger-ui.html
 * http://localhost:8080/v2/api-docs
 */
@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
                //.host("host") // 设置host, 如果前端文档有代理,在SwaggerFilter中进行过滤并删除这个属性,否则接口无法调用
                .select()
                /*
                下面这行代码是告诉 Swagger 要扫描有 @Api 注解的类,
                可以将 Api.class 替换成 ApiOperation.class 扫描带有 @ApiOperation 注解的方法。
                当然还可以使用 basePackage() 方法配置 Swagger 需要扫描的包路径。
                */.apis(RequestHandlerSelectors.withClassAnnotation(Api.class)).paths(PathSelectors.any()).build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                // 文档标题
                .title("测试Spring Boot2.7.2整合Swagger2.9.2")
                // 文档描述
                .description("RESTFul接口文档说明").termsOfServiceUrl("https://gitee.com/slq1893").version("1.0").build();
    }
}

3、编辑文档接口信息

@RestController
@RequestMapping("/user")
@Api(value = "测试接口", tags = "用户管理相关接口")
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 全部查询人员
     * @return
     */
    @GetMapping
    @ApiOperation(value="全部查询人员")
    @RequestMapping(method = RequestMethod.GET)
    public List<User> getAllUser() {
        return userService.list();
    }
}

4、application.yml配置文件中加入如下配置(关键步骤)

spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

OK了,就多增加了一个第4步骤。
swagger2文档的默认地址是 /swagger-ui.html, 本地开发的访问 http://localhost:端口/swagger-ui.html就可以看到自动生成的文档了。
在这里插入图片描述

整合Swagger3.0.0

1、添加Swagger3依赖

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

2、创建Swagger3的Java配置类

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.oas.annotations.EnableOpenApi;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

/**
 * @author SLQ1893
 * http://localhost:8080/swagger-ui/
 */
@Configuration
@EnableOpenApi
public class Swagger3Config {

    @Bean
    public Docket docket() {
        return new Docket(DocumentationType.OAS_30).apiInfo(apiInfo()).enable(true).select()
                //添加swagger接口提取范围,修改成指向你的controller包
                .apis(RequestHandlerSelectors.basePackage("com.slq.springboot.controller"))
                .paths(PathSelectors.any()).build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder().title("后台管理系统接口文档").description("这是一个后台管理系统")
                .contact(new Contact("SLQ1893", "https://gitee.com/slq1893", "slq1893@163.com"))
                .version("1.0").build();
    }
}

其他步骤同整合Swagger2.9.2一致。
swagger3文档的默认访问地址是http://localhost/swagger-ui/
在这里插入图片描述
好像与Swagger3没啥区别

都看到这了,难道不给博主点个赞嘛

常用注解

Swagger2提供了一些注解来丰富接口的信息,常用的有:

@ApiOperation:用在方法上,说明方法的作用

value: 表示接口名称

notes: 表示接口详细描述

@ApiImplicitParams:用在方法上包含一组参数说明

@ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面

paramType:参数位置

header 对应注解:@RequestHeader

query 对应注解:@RequestParam

path 对应注解: @PathVariable

body 对应注解: @RequestBody

name:参数名

dataType:参数类型

required:参数是否必须传

value:参数的描述

defaultValue:参数的默认值

@ApiResponses:用于表示一组响应

@ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息

code:状态码

message:返回自定义信息

response:抛出异常的类

参考信息

Swagger注解文档
Swagger官方网站

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值