Knife4j_整合_Swagger3


Knife4j整合Swagger3

引入架包

<!--knife4j-->
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-boot-starter</artifactId>
    <version>3.0.3</version>
</dependency>

配置文件添加

spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

定义配置类

/**
 * @EnableOpenApi 开启 Swagger3 的注解。与 Swagger2 启动注解不同 @EnableSwagger2
 * @EnableKnife4j 开启 Knife4j
 * 不需要重写 BeanPostProcessor 类来实现兼容
 */
@Configuration
@EnableOpenApi
@EnableKnife4j
public class SwaggerConfig implements WebMvcConfigurer {

    /**
     * 显示swagger-ui.html文档展示页,还必须注入swagger资源:
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }

    /**
     * swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
     */
    @Bean(name = "docket")
    public Docket docket() {
        return new Docket(DocumentationType.OAS_30)
            .apiInfo(apiInfo())
            .select()
            //此包路径下的类,才生成接口文档
            .apis(RequestHandlerSelectors.basePackage("com.reach24.xxxx.controller"))
            //加了ApiOperation注解的类,才生成接口文档
            .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
            .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
            .paths(PathSelectors.any())
            .build();
    }

    /**
     * api文档的详细信息函数,注意这里的注解引用的是哪个
     */
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
            //大标题
            .title("微服务后台服务API接口文档")
            // 版本号
            .version("1.0")
            // 描述
            .description("后台API接口")
            // 作者
            .contact(new Contact("杭州xxxx互联网事业部","www.xxxx.com","xxxx.com"))
            .license("The Apache License, Version 2.0")
            .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html")
            .build();
    }
}

不需要重写 BeanPostProcessor 类来实现兼容。

注意

  • 使用 swagger3 需要的架包是:
<!--swagger3-->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>${swagger.version}</version>
</dependency>
  • 使用 knife4j 需要的架包是:
<!--knife4j-->
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-boot-starter</artifactId>
    <version>${knife4j.version}</version>
</dependency>

如果两个接口的地址都需要,那么这两个架包都少不了。


文章作者: L Q
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 L Q !
  目录