Spring Boot多模块(双后端服务)整合Smart-Doc实战,Smart-Doc 真香!

Spring Boot多模块(双后端服务)整合Smart-Doc实战,Smart-Doc 真香!
在这里插入图片描述
🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志
🎐 个人CSND主页——Micro麦可乐的博客
🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战
🌺《RabbitMQ》专栏19年编写主要介绍使用JAVA开发RabbitMQ的系列教程,从基础知识到项目实战
🌸《设计模式》专栏以实际的生活场景为案例进行讲解,让大家对设计模式有一个更清晰的理解
🌛《开源项目》本专栏主要介绍目前热门的开源项目,带大家快速了解并轻松上手使用
🍎 《前端技术》专栏以实战为主介绍日常开发中前端应用的一些功能以及技巧,均附有完整的代码示例
✨《开发技巧》本专栏包含了各种系统的设计原理以及注意事项,并分享一些日常开发的功能小技巧
💕《Jenkins实战》专栏主要介绍Jenkins+Docker的实战教程,让你快速掌握项目CI/CD,是2024年最新的实战教程
🌞《Spring Boot》专栏主要介绍我们日常工作项目中经常应用到的功能以及技巧,代码样例完整
👍《Spring Security》专栏中我们将逐步深入Spring Security的各个技术细节,带你从入门到精通,全面掌握这一安全技术
如果文章能够给大家带来一定的帮助!欢迎关注、评论互动~

Spring Boot多模块(双后端服务)整合Smart-Doc实战

问题

在前不久博主发布的《Spring Boot集成Smart-Doc示例,彻底告别SpringDoc OpenAPI的代码侵入!》,给大家演示了如何快速的在Spring Boot 中集成Smart-Doc,有小伙伴问了我自己的项目都是多模块或者微服务的,那么如何配置Smart-Doc

针对这个问题,博主特意给小伙伴进行本次Spring Boot多模块整合Smart-Doc实战,这也正是很多企业在“后端 API 网关服务 + 前端 API 网关服务(或管理端/用户端分离)”多模块架构下经常遇到的情况。

Smart-Doc 虽然是静态源码分析工具,但完全可以优雅地应对这种 多可运行模块 结构,只要理解它的生成机制,就很容易实现多模块的整合!

在这里插入图片描述

场景背景

我们接着借用上一篇的项目改造一下,分别设置common通用模块(放置实体类)、backend-api模块(作为可启动的后台管理端接口服务) 、frontend-api模块(作为可启动前端用户端接口服务),改造后的整体项目结构如下:

在这里插入图片描述
SpringBoot 多模块项目中的配置,我们这里就不赘述了,后端API服务8081端口,前端API服务8082端口

各模块独立生成方式

这种方式实际上就是上一篇文章的实现方式,在各可运行API模块各自设置对应的 api-doc.json

唯一需要注意的是通用模块作为实体类,我们需要加以配置

后端API服务Smart-Doc配置

如博主的项目backend-api/src/main/resources/smart-doc.json

{"projectName":"后端服务 API","allInOne":true,"outPath":"src/main/resources/static/doc","serverUrl":"http://localhost:8081","packageFilters":"com.toher.smartdocdemo.backend.controller.*","sourceCodePaths":[{"path":"src/main/java","desc":"Backend Module"},{"path":"../common/src/main/java",//引入通用实体类模块"desc":"Common DTOs"}]}

前端API服务Smart-Doc配置

如博主的项目backend-api/src/main/resources/smart-doc.json

{"projectName":"前端服务 API","outPath":"src/main/resources/static/doc","projectName":"SmartDoc Demo","allInOne":true,"serverUrl":"http://localhost:8082","packageFilters":"com.toher.smartdocdemo.frontend.controller.*","sourceCodePaths":[{"path":"src/main/java","desc":"前端API模块"},{"path":"../common-bean/src/main/java",//引入通用实体类模块"desc":"Common 通用实体类模块"}]}

生成文档

使用命令行方式,进入模块目录运行

cd backend-api mvn smart-doc:html 

IDEA插件方式运行生成

在这里插入图片描述


最终效果:
找到对应文档目录,双击运行html即可访问

在这里插入图片描述


前端API服务生成同理!

统一集中生成 (Makefile)

又有小伙伴要说了,哎呀这个每个服务模块都要去生成一次,能不能直接聚合一次性生成? 答案是肯定的,官方也明确给出了方案:

针对多模块的场景,由于构建命令过长,应该可以放入Makefile中做编排,在自己的项目中新建一个Makefile文件,添加构建命令即可。
注意:window环境下先安装MinGW,idea中Makefile Support插件

为了验证是否集中生成,我们将前后端API的配置文件 smart-doc.json 中生成文档目录分别修改为:

#后端"outPath":"../docs/backend", #前端"outPath":"../docs/frontend", 

编写Makefile文件

# Makefile 命令开头必须为tab键 如mvn前端必须是tab键# 生成backend-api的文档 backend-api@html-doc: mvn smart-doc:html -Dfile.encoding=UTF-8 -pl :backend-api @echo "后端API文档生成完成!"# 生成frontend-api的文档 frontend-api@html-doc: mvn smart-doc:html -Dfile.encoding=UTF-8 -pl :frontend-api -am @echo "前端API文档生成完成!"

IDEA下载好Makefile Support插件后,右键执行该文件,最后我们看生成的效果:

在这里插入图片描述


至此我们就实现了统一集中生成文档,可直接上传到内部文档服务器或合并到静态站点中。

总结

通过本文的介绍,相信小伙伴们已经能掌握Spring Boot多模块如何整合Smart-Doc了,在日常开发过程中,我们依然还是各服务模块独立生成文档即可,在 CI/CD 阶段,,通过编写Makefile,能更快速并统一的集中管理生成!

至于Smart-Doc配置文件中更多的参数应用,请小伙伴们参考官方文档!

如果你在实践过程中有任何疑问或更好的扩展思路,欢迎在评论区留言,最后希望大家一键三连给博主一点点鼓励!


Read more

力扣hot-100(一刷自用版)

力扣hot-100(一刷自用版)

hot100 文章目录 * hot100 * 哈希 * 两数之和 * 字母异位词分组 * 最长连续序列 * 双指针 * 移动零 * 盛最多水的容器 * 三数之和 * 接雨水 * 滑动窗口 * 无重复字符的最长子串 * 找到字符串中所有字母异位词 * 子串 * 和为k的子数组 * 滑动窗口最大值 * 最小覆盖子串 * 普通数组 * 最大子数组和 * 合并区间 * 轮转数组 * 除了自身以外数组的乘积 * 缺失的第一个正数 * 矩阵 * 矩阵置零 * 螺旋数组 * 旋转图像 * 搜索二维矩阵 II * 链表 * 相交链表 * 反转链表 * 回文链表 * 环形链表 * 环形链表 II * 合并两个有序链表 * 两数相加 * 删除链表的倒数第N个节点

By Ne0inhk
数据结构——排序算法第二幕(交换排序:冒泡排序、快速排序(三种版本) 归并排序:归并排序(分治))超详细!!!!

数据结构——排序算法第二幕(交换排序:冒泡排序、快速排序(三种版本) 归并排序:归并排序(分治))超详细!!!!

文章目录 * 前言 * 一、交换排序 * 1.1 冒泡排序 * 1.2 快速排序 * 1.2.1 hoare版本 快排 * 1.2.2 挖坑法 快排 * 1.2.3 lomuto前后指针 快排 * 二、归并排序 * 总结 前言 继上篇学习了排序的前面两个部分:直接插入排序和选择排序 今天我们来学习排序中常用的交换排序以及非常稳定的归并排序 快排可是有多种方法的,高速列车,即将发车,fellow me 一、交换排序 交换排序基本思想: 所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置 交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动 1.1 冒泡排序 冒泡排序是一种最基础的交换排序。之所以叫做冒泡排序,

By Ne0inhk

Flutter 三方库 rbush 的鸿蒙化适配指南 - 在鸿蒙系统上构建极致、极速、基于 R-Tree 算法的工业级 2D 空间索引与大规模点位碰撞检测引擎

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 rbush 的鸿蒙化适配指南 - 在鸿蒙系统上构建极致、极速、基于 R-Tree 算法的工业级 2D 空间索引与大规模点位碰撞检测引擎 在鸿蒙(OpenHarmony)系统的地理信息系统(GIS)、高性能 2D 游戏引擎、或者是需要对成千上万个矩形/点位进行毫秒级“范围查询(Range Search)”的应用中,如何摆脱由于线性扫描(O(n))导致的由于由于性能瓶颈?rbush 为开发者提供了一套工业级的、基于高级 R-Tree 算法。管理过程。由于由空间索引方案。本文将深入实战其在鸿蒙业务逻辑层空间数据处理中的应用。 前言 什么是 RBush?它是一个旨在解决“如何快速在一个平面找到一群物体”的高性能数据结构。它采用了 R-Tree

By Ne0inhk
【优选算法必刷100题】第014题(同向双指针:滑动窗口算法):找到字符串中所有字母异位词

【优选算法必刷100题】第014题(同向双指针:滑动窗口算法):找到字符串中所有字母异位词

🔥艾莉丝努力练剑:个人主页 ❄专栏传送门:《C语言》、《数据结构与算法》、C/C++干货分享&学习过程记录、Linux操作系统编程详解、笔试/面试常见算法:从基础到进阶 ⭐️为天地立心,为生民立命,为往圣继绝学,为万世开太平 🎬艾莉丝的简介: 🎬艾莉丝的算法专栏简介: 目录 014  找到字符串中所有字母异位词 1.1  算法思路:滑动窗口 + 哈希表 1.2  算法实现 1.2.1  第一次冲锋:失败告终 1.2.2  优化 1.2.3  简化代码 1.3  博主手记 结尾 014  找到字符串中所有字母异位词

By Ne0inhk