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

embedded/2024/11/19 18:58:12/

前言

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

依赖版本

目前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不兼容

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

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

java">@Configuration
public class SwaggerConfig {@Beanpublic 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: trueproduction: true

在这里插入图片描述


http://www.ppmy.cn/embedded/138840.html

相关文章

若依引入百度地图组件

若依引入百度地图组件 前提:已经在百度开放平台获得ak!!! 步骤: 1.在前端软件(这里以webstorm为例)终端运行: npm install vue-baidu-map --save 2.等待下载好后查看: 点击查看这个依赖文件 查看是否有 这个文件,没有的话,删除整个node_modules文件,然后再次在终端运行步…

金融领域先锋!海云安成功入选2024年人工智能先锋案例集

近日&#xff0c;中国人工智能产业发展联盟《2024年人工智能先锋案例集》&#xff08;以下简称“AIIA先锋案例集”&#xff09;在中国人工智能产业发展联盟第十三次全体会议上正式发布。该案例集由人工智能产业发展联盟&#xff08;AIIA&#xff09;、工业和信息化部新闻宣传中…

109. UE5 GAS RPG 实现检查点的存档功能

在这一篇文章里&#xff0c;我们接着实现存档的功能&#xff0c;保存当前玩家的生成位置&#xff0c;游戏里有很多中方式去实现玩家的位置存储&#xff0c;这里我们采用检查点的方式&#xff0c;当玩家接触到当前检查点后&#xff0c;我们可以通过检查点进行保存玩家的状态&…

QT<30> Qt中使鼠标变为转圈忙状态

前言&#xff1a;当我们在写软件时&#xff0c;在等待阻塞耗时操作时可以将鼠标变为忙状态&#xff0c;并在一段时间后恢复状态&#xff0c;可以用到GxtWaitCursor&#xff1a;Qt下基于RAII的鼠标等待光标类。 一、效果演示 二、详细代码 在项目中添加C文件&#xff0c;命名为…

c#加载shellcode

本地加载bin文件 SharpPELoader项目如下&#xff1a; using System; using System.IO; using System.Runtime.InteropServices;namespace TestShellCode {internal class Program{private const uint MEM_COMMIT 0x1000;private const uint PAGE_EXECUTE_READWRITE 0x40;pr…

Flink新版Source接口源码解析

目录 1. 前言 2. Source解析 2.1 Source类图 2.2 接口和方法说明 2.2.1 Source,> 3. SplitEnumerator解析 3.1 SplitEnumetator类图 3.2 类和方法说明 3.2.1 SplitEnumerator 3.2.2 SimpleVersionedSerializer 4. SourceReader解析 4.1 SourceReader类图 4.2 类…

Ekman理论回归

Scientific reportsEkman revisited: Surface currents to the left of the winds in the Northern HemisphereVagn Walfrid Ekman1905年的理论描述了地球旋转受到风的作用&#xff0c;摩擦边界层中的流场&#xff0c;北半球总是在海表风的右侧&#xff0c;南半球总是在海表风的…

Linux之进程(3)

Linux2.6内核进程调度队列 操作系统有分时操作系统&#xff0c;实时操作系统&#xff0c;实时操作系统主要应用于一些制造业工业等&#xff0c;需要快速响应&#xff0c;但是在互联网领域不会用实时操作系统 队列共有140个空间大小&#xff0c;但是我们不用考虑前面100个实时的…