当前位置: 首页 > article >正文

多模块集成swagger(knife4j-spring-boot-starter)

前言

单体项目、多模块单体项目、微服务项目,集成的方案大同小异,微服务会在网关做个聚合,后面再补充。

依赖版本

目前demo的版本如下:

  1. spring boot 2.7.3
  2. spring cloud 2021.0.4
  3. spring cloud alibaba 2021.0.4.0
  4. knife4j-spring-boot-starter 3.0.3

从零开始

多模块引入swagger:

  1. 新建多模块项目
  2. 新建ms-common-swagger(作用:swagger的相关依赖及定义)
  3. 新建ms-module-system(业务服务,可能还有服务a、b、c)
  4. 在system服务引入swagger
  5. 使用@Api等注解
第一步,新建多模块项目

第二步,新建ms-common-swagger

只需要一个jar

<dependency>
	<groupId>com.github.xiaoymin</groupId>
	<artifactId>knife4j-spring-boot-starter</artifactId>
	<version>3.0.3</version>
</dependency>
第三步,新建ms-module-system

引入ms-common-swagger

<dependency>
    <groupId>com.ms</groupId>
    <artifactId>ms-domain-system</artifactId>
</dependency>

配置项:

 spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

不配置上述ant_path_matcher会导致问题!

在这里插入图片描述
Failed to start bean 'documentationPluginsBootstrapper'
具体原因没深究,有兴趣自行研究,网上相关资料描述是spring boot 2.6引入的路径匹配策略和springfox不兼容

到底需要不需要配置类或者注解或者配置?

对于配置类,默认的扫描策略没具体研究,从结果看,都会被扫。
但是接口文档关注点应该是业务类接口,一种是通过包路径、一种是通过注解,所以配置类最好是配置上。

@Configuration
public class SwaggerConfig {
    @Bean
    public Docket webApiConfig() {
        System.out.println("swagger docker被注册");
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
//                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                .paths(PathSelectors.any())
                .build();
    }
}

对于注解,比如@EnableSwagger2或@EnableKnife4j,是不需要的


对于配置项,开启可不需要,关闭需要(enable是增强处理,production是关闭文档访问)

knife4j:
  enable: true
  production: true

在这里插入图片描述


http://www.kler.cn/a/400122.html

相关文章:

  • 跨平台WPF框架Avalonia教程 一
  • 2411rust,1.80
  • Java putIfAbsent() 详解
  • 七、箭头函数及简写、arguments、剩余参数、展开运算符、解构数组与对象、数组常见方法(forEach、map、join、reduce)
  • 《Django 5 By Example》阅读笔记:p645-p650
  • 华为ensp实验二--mux vlan的应用
  • C++ ──── set和map的模拟实现
  • 探索IDE的无限可能:使用技巧与插件推荐
  • 【人工智能】生成对抗网络(GAN)原理与Python实现:从零构建图像生成模型
  • Spark RDD、DStream、DataFrame、DataSet 在窗口操作上的区别
  • 国内镜像android studio
  • 请描述一下JVM(Java虚拟机)的生命周期及其对应用程序性能的影响
  • 如何加速conda、docker资源下载速度
  • 开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-tool usage入门-Qwen-Agent深入学习(四)
  • sglang 部署Qwen2VL7B,大模型部署,速度测试,深度学习
  • YOLO v1目标检测
  • 小程序中模拟发信息输入框,让textarea可以设置最大宽以及根据输入的内容自动变高的方式
  • Qt 日志文件的滚动写入
  • 聚类算法总结
  • win7系统下惠普测试打印页失败提示“系统不支持请求的命令”解决方法
  • FPGA通过MIPI CSI-2发送实时图像到RK3588,并HDMI显示
  • Maven的下载安装及配置
  • Postman之数据提取
  • R语言-快速对多个变量取交集
  • JavaWeb 开发面试题及参考答案
  • Python+Pyecharts重画基金净值曲线(全)