快速开始
项目简介
Dante Cloud 国内首个支持阻塞式和响应式服务并行的、开箱即用的企业级云原生微服务基座。是采用领域驱动模型(DDD)设计思想,以「高质量代码、低安全漏洞」为核心,基于 Spring 生态全域开源技术,高度模块化和组件化设计,支持智能电视、IoT等物联网设备认证,满足国家三级等保要求,支持接口国密数字信封加解密等一系列安全体系的一站式多租户微服务解决方案。独创的可以“一套代码实现微服务和单体两种架构灵活切换”的企业级应用系统。
一、项目理念
Dante Cloud 一直秉承着“简洁、高效、包容、务实”的理念,使用微服务领域及周边相关的各类新兴技术或主流技术进行建设,不断地深耕细作、去粗取精、用心打造。目标是构建一款代码质量高、维护投入低、安全防护强的微服务基座,可以帮助用户快速跨越架构技术选型、技术研究探索、基础架构搭建阶段,直接聚焦业务开发。极大地降低传统项目中因安全漏洞、技术负债、低质代码等潜在隐患所产生的高维护投入。期望像项目名字寓意一样,构建一套可以在在行业变革的时期承上启下,助力企业信息化建设和数字化转型的产品。
Dante Cloud 核心关注点是:「高质量的系统代码」、「合理的系统架构」、「低耦合的模块划分」、「高安全性系统实现」、「灵活的功能扩展能力」,「优质的微服务防范」。不会像其它一些系统一样,追求 业务功能 的 丰富 性。堆叠大量无法做到真正通用的功能,反倒会成为负担和干扰,不如由用户自己按照需求灵活设计和实现。
二、架构设计
Dante Cloud 优秀的模块化能力,为系统提供了高度灵活的配置能力、功能的“可插拔”能力 以及不同需求场景的适配能力。正因为优秀的模块化体系,使得 Dante Cloud 不仅是一套完整的微服务架构,还是一套高质量的 「单体模块化」 系统。这里的微服务架构和单体架构并不是分离的两套代码,也不是分离的两个项目。而是完全融合的一整套代码,使用时可以根据需要选择是以微服务模式或者单体模式运行,配合灵活的模块能力,实现系统的多样化定制和功能的管控。
这是 Dante Cloud 微服务最大的特色之一:“一套代码、两种架构”。可以帮助企业在项目早期以单体架构快速建设项目、方便开发人员在本地进行开发以及新技术研究。在项目后期随着用户规模增大以及并发需求提升时,可以快速无缝迁移至微服务架构。
三、适用用户
微服务技术并不是 **「落伍」**了,而是进入了 「成熟期」,它的 「适用场景和边界被更清晰地定义」 了。微服务不再是一个 「必须要有」 的选项,而是一个 「权衡之后」 的选择。
Dante Cloud 也并未使用任何复杂难懂或难以上手掌握的技术,项目中所涉及核心关键组件中,其中 「近 80% 均为 Spring 生态原生组件」。技术实现均为各组件标准用法的组合与应用,编码风格和代码设计一直也在极尽努力尽量与 Spring 生态的标准规范用法保持一致,只不过经过大量的版本迭代和重构之后逐渐形成了一定的封装与抽象。
因此,我们推荐以下用户选择和使用 Dante Cloud
- 「传统项目用户」:可以先体验和使用单体版,先从“前后端分离”以及“多端适配”开始,尝试不同于传统内嵌页面的开发模式。之后也可以平滑迁移至微服务版。
- 「数字转型用户」:如果您正在考虑进行数字化转型,可以直接选择使用微服务版,不用再为“基础组件碎片化,需花大量时间整合、踩坑版本兼容”等问题而苦恼。
- 「复杂项目用户」:如果您的业务复杂度上升到一定阶段,可以直接选择使用微服务版,直接聚焦于业务开发,节省大量前期搭建基础设施、解决通用技术问题的时间。
- 「初创团队用户」:可以先使用单体版进行开发,只要代码放置规范、模块划分合理,后期可以根据需要无缝迁移至微服务架构
- 「技术突破用户」:本项目并不拘泥局限于常规成熟的技术内容,目标是探索新型技术并用其来为业务的创新服务。喜欢技术尝鲜和突破的用户推荐选择使用。
- 「学习提升用户」:本项目代码实现优雅和领域划分清晰,编码风格和模块实现尽最大可能与 Spring 生态规范保持一致,是深入学习 Spring 生态组件和提升技能的优秀案例
想要从传统项目转型至微服务项目的用户,建议详细阅读《企业IT架构转型之道:阿里巴巴中台战略思想与架构实战》一书(可以先读前几章)之后再上手本项目!
对于以下用户我们不建议选择 Dante Cloud
- 「单体拥趸用户」:如果您觉得单体架构可以满足您所有的架构需求,微服务繁琐庞大无法比拟单体的“方便”、“快捷”,那么建议选择其它更专业的单体项目。
- 「单一前端用户」:如果您的项目只会有Web端,不会涉及小程序、移动端、桌面端等其它类型终端,未来也不需要考虑并发或者扩展等问题,选择本项目大材小用。
- 「主流技术用户」:如果您只擅长 mysql、mybatis 等主流技术,本项目所涉及的基础技术体系可能会让您觉得格格不入,建议选择更适配您技术体系项目。
- 「功能丰富用户」:本项目定位是基础平台,自认为没有能力做到功能既丰富又通用,如果您追求拥有丰富的、开箱即用的功能后台系统,那么本项目并不适合。
- 「极简编程用户」:如果您希望基于已有知识不看文档不用学习就可以快速搭建应用,或者通过拖拽生成代码简化开发,这与本项目的产品定位、开发理念、设计哲学背道而驰。
- 「审美品鉴用户」:本项目前端是使用组件库纯手搓构建,没有专业的美工也没有照搬主流框架,初衷是为后端开发人员接触前端提供一条更友好的途径,所以不能保证符合您的审美。

[一]Dante Cloud 3.3.X 版本
[1]新特性
Spring Boot已升级至 3.3.0Spring Authorization Server已升级至 1.3.0- 全面采用 Java 21,默认开启虚拟线程,以改善阻塞操作的处理降低系统资源的消耗
- 支持传统的
阻塞式微服务与基于Reactor和WebFlux的响应式微服务同时运行在一套系统之中 - 不强制使用
响应式方式开发,可根据自身项目对资源吞吐量、资源消耗、特殊功能性能保障的需求,灵活的选择是采用响应式还是阻塞式来开发对应的服务。 - 在保持 Dante Cloud 原有
Spring Authorization Server深度扩展的各种特性的前提下,实现响应式服务的动态鉴权与现有体系的完全融合(无需在代码中使用@PreAuthorize写死权限,全部通过后台动态管理) - 向“响应式编程”转变,基于
Reactor重构大量核心代码,进一步提升本系统代码质量和运行效能 - 重新架构所有核心组件模块,进一步降低各模块的耦合性,减少第三方组件依赖深度,简化各模块使用的复杂度,使用更贴近 Spring Boot 生态官方写法,提升模块组件的可插拔性以及
响应式和阻塞式不同环境下自动配置的适配能力 - 实现
响应式和阻塞式不同类型服务,Session 共享体系以及自定义 Session 体系的完美融合(谁说微服务就一定用不到 Session :))。 - 新增
GRPC服务间调用和通信方式,系统核心服务间调用支持OpenFeign和GRPC两种方式,可通过修改配置实现两种方式的切换。 - 基于
RSocket全面重写WebSocket消息系统,实现WebSocket的响应式改造以及RSocket与 Spring Security 体系的全面集成。支持多实例、跨服务的私信和广播 - 新增 OAuth2 独立客户端,可用于客户端动态注册以及授权码模式
- 新增基于
Loki + Grafana生态的轻量级日志中心和链路追踪解决方案,使用 OSS 作为数据存储,极大地降低资源需求,可作为原有 Skywalking 和 ELK 重量级体系的备选方案,根据实际需要切换。 - 开放纯手写动态表单功能。可实现BPMN、动态表单、Camunda 流程引擎的串联,实现工作流程运转(目前仅支持简单工作流)
- 开放包含自定义属性面板的 BPMN 在线设计器功能。
- 开放物联网设备认证和管理模块,支持基于 Emqx 的物联网设备通信和管理。
- 开放阿里云内容审核、百度 OCR、环信、Emqx、天眼查、Nacos、PolarisMash等第三方 OpenApi 封装模块
- 前端工程支持 Docker 运行,相关参数可通过配置环境变量修改。已上传至 Docker Hub,可以直接下载运行。
[2]设计答疑
1. 为什么不做“纯血”响应式
响应式固然有其优势所在,但是使用响应式也不得面对一些现实问题:
- 要做纯血响应式,首先要有生态的保证。目前响应式的接受度还并不是很高,很多组件还都不支持响应式。除非有精力将所有用到的不支持的组件改写一遍,否则很难做到纯血,特别是对于微服务系统来说。
- 绝大多数应用都是需要使用数据库的,Java 领域现有的 orm 组件,要么不支持响应式(比如 JPA)、要么支持的不是特别好(比如 Hibernate)、要么需要自己编写的内容太多(比如 R2DBC),所以从投入产出比的角度说目前在数据层面做响应式并不“划算”
所以,还是要具体看应用系统的类型,在条件不具备的情况下没有必要做到纯血响应式。
2. 响应式可以带来哪些好处
响应式对阻塞式的好处,网上有大把的文章介绍,具体就不赘述了。对于实际应用中比较明显的优势:
响应式资源的利用效能更高,对于高资源消耗的功能,响应式的优势更突出- 微服务系统往往会需要集成更多内容,特别在数据层面,可能会存在同时使用多种类型数据存储以及数据的流转和迁移,常规事件驱动与响应式的“流”式思维比传统阻塞式更为契合。
- 响应式可以与事件驱动更好的配合。在 Spring 生态中在多个方面都大量使用了事件驱动,而响应式的核心设计思想也与事件驱动殊途同归。
正因为 Dante Cloud 用了很多 Spring Integration 的内容,传统阻塞式方式越用越别扭,才越来越觉得有必要做响应式支持。如果有时间可以好好看看 Spring Integration,也许会为你打开一个新的世界。
3. 学习响应式编程有哪些难点
- 如果基于 Reactor 学习响应式编程,难点和突破点就在于
Flux和Mono两个类。把这两个类的方法用透、弄明白,基本上就可以消除所有开发阻碍了。 - 响应式编程最大的难点就是编程思维的转换,因为习惯了阻塞式编程,一时会很难适应
响应式的流式开发思维
世上无难事只怕有心人
[二]Dante Cloud 3.0.X 特性
[1]核心基础依赖便捷切换
- 新增
Spring Cloud Tencent和Spring Cloud原生微服务全家桶等两种基础设施支持。 - 新增
Spring Cloud Alibaba、Spring Cloud Tencent和Spring Cloud原生微服务全家桶三种基础设值切换能力,可以以相对便捷的方式切换使用 Alibaba、Tencent、Spring 等基础设施环境。可根据自身实际需求选择,不再局限于只能在某一种基础设施环境中运行。
[2]Spring Authorization Server 全特性支持及扩展
- 基于
Spring Authorization Server和Spring Data JPA实现多租户系统架构, 支持 Database 和 Schema 两种模式。 - 基于
Spring Data JPA,重新构建Spring Authorization Server基础数据存储代码,替代原有 JDBC 数据访问方式,破除Spring Authorization Server原有数据存储局限,扩展为更符合实际应用的方式和设计。 - 基于
Spring Authorization Server,在 OAuth 2.1 规范基础之上,增加自定义Resource Ownership Password(密码) 认证模式,以兼容现有基于 OAuth 2 规范的、前后端分离的应用,支持Refresh Token的使用。 - 基于
Spring Authorization Server,在 OAuth 2.1 规范基础之上,增加自定义Social Credentials(社会化登录) 认证模式,支持手机短信验证码、微信小程序、基于JustAuth的第三方应用登录, 支持Refresh Token的使用。 - 扩展
Spring Authorization Server默认的Client Credentials模式,实现真正的使用 Scope 权限对接口进行验证。 增加客户端 Scope 的权限配置功能,并与已有的用户权限体系解耦 - 支持
Spring Authorization ServerAuthorization Code PKCE认证模式 - 在
Spring Authorization Server的标准的JWT Token加密校验方式外,支持基于自定义证书的JWT Token加密校验方式,可通过配置动态修改。 - 支持
Opaque Token(不透明令牌) 格式及校验方式,降低JWT Token被捕获解析的风险。可通过修改配置参数,设置默认 Token 格式是采用Opaque Token格式还是JWT Token格式。 - 全面支持
OpenID Connect(OIDC) 协议,系统使用时可根据使用需求,通过前端开关配置,快速切换 OIDC 模式和传统 OAuth2 模式 - 深度扩展
Authorization Code、Resource Ownership Password、Social Credentials几种模式,全面融合IdToken、Opaque Token、JWT Token与现有权限体系,同时提供IdToken和 自定义 Token 扩展两种无须二次请求的用户信息传递方式,减少用户信息的频繁请求。 - 自定义
Spring Authorization Server授权码模式登录认证页面和授权确认页面,授权码模式登录采用数据加密传输。支持多种验证码类型,暂不支持行为验证码。 - 新增基于
Spring Authorization Server的、支持智能电视、IoT等物联网设备认证模式 - 无须在代码中配置
Spring Security权限注解以及权限方法,即可实现接口鉴权以及权限的动态修改。采用分布式鉴权方案,规避 Gateway 统一鉴权的压力以及重复鉴权问题 - OAuth2 UserDetails 核心数据支持直连数据库获取和 Feign 远程调用两种模式。OAuth2 直连数据库模式性能更优,Feign 访问远程调用可扩展性更强。可通过配置动态修改采用策略方式。
[3]全体系化应用和开发特性集成
- 微服务架构全体系 Session 共享,实现 Spring Authorization Server、多实例服务、WebSocket、自定义 Session 以及大前端 Session 的统一。
微服务架构下的 Session 可以选择不用,但是不能没有。 - 混合国密
SM2(非对称) 和SM4(对称加密) 算法,实现基于数字信封技术的秘钥动态生成加密传输。利用“一人一码机制”,实现前后端数据进行动态加密传输与。Spring Authorization Server OAuth 2.1 授权模式深度融合,构建统一体系的数据传输加密。 - 全面整合
@PreAuthorize注解权限与URL权限,通过后端动态配置,无须在代码中配置Spring Security权限注解以及权限方法,可实现接口鉴权以及权限的统一管理和动态修改 - 融合 Spring Cloud Stream 和 WebSocket,以优雅的方式实现 WebSocket 服务多实例环境下,点对点、广播消息跨实例推送,在线用户实时统计,完美支持 WebSocket 集群化应用。
- 借鉴 JPA 标准化设计思想,提取和抽象 OSS 标准化操作,形成统一的 Java OSS API 规范。封装可操作任意厂商的、统一的 REST API,构建定义统一、动态实现的应用模式(类似于 Hibernate 是 JPA 的一种实现,Hibernate 以 Dialect 方式支持不同的数据库一样),在不修改代码的情况下通过修改配置实现 OSS 的无缝切换和迁移
- 自研基于
JetCache分布式两级缓存,完美实现 JPA Hibernate 二级缓存,支持各类查询数据缓存以及 JPA@ManyToMany,@ManyToOne等关联查询。完美解决 Spring Cache 仅使用本地缓存、创建 Key 繁琐和分页数据无法更新的问题。支持多实例服务本地缓存和远程缓存数据同步,同时支持 Mybatis Plus 二级缓存 - 平台统一错误处理,支持自定义错误码体系,有效集成
OAuth2、Spring Validation等多方错误体系并有机整合 HTTP 状态码。采用 Customizer 模式,采用错误码自动计算和创建模式,支持代码模块级错误码灵活定义扩展。响应结果更加多样灵活,反馈结果也更加人性化,便于理解和定位问题。 - 全体系 OkHttp 、HttpClient 统一化集成,实现 OkHttp 、HttpClient 与 RestTemplate 、Openfeign 一体化融合。统一使用 Feign 配置参数,对 OkHttp 、HttpClient 进行参数设定,可策略化选择设置使用 OkHttp 或 HttpClient 作为 RestTemplate 、Openfeign 统一的基础 HttpClient
[4]采用 pnpm monorepo 重构前端
- 未使用任何流行开源模版,使用全新技术栈,完全纯"手写"全新前端工程。
- 借鉴参考流行开源版本的使用和设计,新版前端界面风格和操作习惯尽量与当前流行方式统一。
- 充份使用 Typescript 语言特性,解决大量类型校验问题,尽可能规避 "any" 式的 Typescript 编程语言使用方式。
- 充份使用 Composition Api 和 Hooks 等 Vue3 框架新版特性进行代码编写。
- 充份利用 Component、Hooks 以及 Typescript 面向对象等特性,抽取通用组件和代码,尽可能降低工程重复代码。
- 对较多 Quasar 基础组件和应用功能组件进行封装,以方便代码的统一修改维护和开发使用。
- 对生产模式下,对基于 Vite3 的工程打包进行深度性能优化。
- 提供以 docker-compose 方式,对工程生产代码进行容器化打包和部署。
- 该版本基于 pnpm,采用 monorepo 模式对前端工程进行重构。构建 monorepo 版本前端,是为扩展更多功能、增加应用级功能做铺垫
- 抽取 utils、components、apis、bpmn-designer 等相关代码,形成共享模块。
- 共享模块已进行优化配置,可编译成独立的组件,单独以组件形式进行发布。
- 代码以共享模块的方式进行单独维护开发,降低现有工程代码复杂度,便于后续功能的扩展和代码的复用。
[三]技术选型
[1]后端核心技术栈
(1)Spring 相关核心技术及版本
| 组件 | 版本 |
|---|---|
Spring Boot | 3.5.7 |
Spring Cloud | 2025.0.0 |
Spring Cloud Alibaba | 2025.0.0.0 |
Spring Cloud Tencent | 2.0.2.2-2024.0.1 |
Spring Authorization Server | 1.5.3 |
Spring Boot Admin | 3.5.5 |
Nacos | 3.1.0 |
Sentinel | 1.8.8 |
Seata | 2.5.0 |
(2)涉及的相关的技术
- 服务注册&发现和配置中心:
Alibaba Nacos&Tencent PolarisMash&Zookeeper - 服务消费:
Spring Cloud OpenFeign&GRPC - 负载均衡:
Spring Cloud Loadbalancer - 服务熔断&降级&限流:
Alibaba Sentinel&Tencent PolarisMash - API 网关:
Spring Cloud Gateway - 服务监控:
Spring Boot Admin&Prometheus + Grafana - 消息队列:
Spring Cloud Bus默认Kafka适配RabbitMQ - 链路跟踪:
Skywalking&Micrometer + Zipkin - 分布式事务:
Seata - 数据库:
Postgresql,MySQL,Oracle和GaussDB... - 数据缓存:
JetCache多级缓存 (Redis+Caffeine) - 持久层框架:
Spring Data Jpa、Spring Data MongoDB、Spring Data Redis&Mybatis Plus - JSON 序列化:
Jackson&Gson - 文件服务:阿里云 OSS/
Minio - 数据调试:
p6spy - 在线文档:
Springdoc+Swagger 3+OpenAPI - 日志中心:
ELK&loki + Minio - 日志收集:
Logstash Logback Encoder& &loki-logback-appender - 数据同步:
Debezimu - 外部集成:
JustAuth,WxJava,多种短信 API - 消息系统:
WebSocket + Stomp&RSocket - 工作流引擎:
Camunda
[2]前端核心技术栈
- Vue 3
- Vite 7
- Typescript 5
- Pinia 2
- Vue-router 4
- Axios
- Quasar 2
- Bpmn.js
- Pnpm
- RSocket.js
[四] 主工程结构
herodotus-cloud
├── configurations -- 配置文件脚本和统一Docker build上下文目录
├── dependencies -- 工程Maven顶级依赖,统一控制版本和依赖
├── module -- 依赖组件半成品拼装工程(可以再此建立业务代码模块,以模块的形式实现代码的共享以及架构的切换)
├ ├── herodotus-module-common -- Module 相关模块公共辅助代码模块
├ └── herodotus-monomer-autoconfigure -- 单体版自动配置模块
├── packages -- 基础核心Starter
├ ├── authentication-spring-boot-starter -- OAuth2 授权服务器自动配置 Starter(主要用于 UAA 认证服务器以及单体版 Herodotus Cloud)
├ ├── authorization-reactive-spring-boot-starter -- 响应式 OAuth2 资源服务器自动配置 Starter(除了 Monitor 等特殊服务以外,所有响应式服务均需依赖)
├ ├── authorization-servlet-spring-boot-starter -- 阻塞式 OAuth2 资源服务器自动配置 Starter(除了 Monitor 等特殊服务以外,所有阻塞式服务均需依赖)
├ ├── facility-spring-boot-starter -- 基础设施切换依赖 Starter
├ ├── rpc-client-oss-spring-boot-starter -- 服务间通信客户端自动配置 Starter(OSS 作为客户端端访问其它服务)
├ ├── rpc-client-uaa-spring-boot-starter -- 服务间通信客户端自动配置 Starter(UAA 作为客户端端访问其它服务)
├ └── rpc-server-upms-spring-boot-starter -- 服务间通信服务端自动配置 Starter(UPMS 作为服务端为其它服务提供访问)
├── platform -- 平台核心服务
├ ├── herodotus-cloud-gateway -- 统一网关服务
├ ├── herodotus-cloud-message -- 系统消息服务
├ ├── herodotus-cloud-monitor -- Spring Boot Admin 监控服务
├ ├── herodotus-cloud-upms -- 统一权限管理系统服务
├ └── herodotus-cloud-uaa -- 账户管理和统一认证模块
├── services -- 平台业务服务
├ ├── herodotus-cloud-bpmn-ability -- 工作流服务
├ ├── herodotus-cloud-bpmn-ability -- 管理服务
├ ├── herodotus-cloud-oss-ability -- 对象存储服务
└── └── herodotus-monomer-application -- Dante Cloud 单体版应用模块[五] 核心组件库
新版核心组件库更名为 Stirrup(马镫)
为什么起名为 Stirrup(马镫)
在古代,骑马作战时,骑士们需要用双手紧握缰绳以控制马匹,这就无法释放双手来使用武器或进行其他操作。在这样的背景下,马镫的出现为骑乘者提供了一个稳定的支撑点,使得骑士能够解放双手,更好地发挥战斗力。
项目更名为马镫,寓意赋能开发人员和企业,从常规的基础工作中解放出来,让其可以将更多的精力投入到设计开发更有创意和创新的产品中去
herodotus-stirrup
├── dependencies -- 工程Maven顶级依赖,统一控制版本和依赖
├── readme -- README 相关素材放置目录
├── stirrup-assistant -- 辅助功能模块
├ ├── assistant-module-access -- 第三方登录接入辅助功能模块
├ ├── assistant-module-captcha -- 验证码辅助功能模块
├ ├── assistant-module-ip2region -- 离线IP地址定位辅助功能模块
├ ├── assistant-module-oss -- AWS SDK V2 对象存储辅助功能模块
├ ├── assistant-module-pki -- 证书管理辅助功能模块
├ └── herodotus-servlet-service-archetype -- 阻塞式类型服务创建 Archetype
├── stirrup-cache -- 缓存功能模块
├ ├── cache-core -- 缓存通用代码模块
├ ├── cache-module-caffeine -- Caffeine 缓存功能封装模块
├ ├── cache-module-jetcache -- JetCache 缓存功能封装模块
├ ├── cache-module-redis -- Redis 缓存功能封装模块
├ └── cache-module-redisson -- Redisson 缓存功能封装模块
├── stirrup-core -- 基础核心模块
├ ├── core-autoconfigure -- 核心自动配置模块
├ ├── core-definition -- 核心定义模块
├ ├── core-foundation -- 基础通用模块
├ └── core-identity -- 身份认证通用模块
├── stirrup-data -- 数据访问模块
├ ├── data-core -- 数据访问通用代码模块
├ ├── data-core-cassandra -- 以 Cassandra 作为数据访问层的通用代码模块
├ ├── data-core-jpa -- 以 JPA 作为数据访问层的通用代码模块
├ ├── data-core-mongodb -- 以 MongoDB 作为数据访问层的通用代码模块
├ ├── data-core-redis -- 以 Redis 作为数据访问层的通用代码模块
├ ├── data-module-hibernate -- Hibernate 扩展模块
├ └── data-module-tenant -- 基于 JPA 的多租户扩展配置模块
├── stirrup-grpc -- GRPC定义模块
├ ├── grpc-module-oss -- GRPC对象存储定义模块
├ ├── grpc-module-permission -- GRPC用户权限定义模块
├ └── grpc-module-user -- GRPC用户定义模块
├── stirrup-logic -- 系统内置功能业务逻辑模块
├ ├── logic-module-bpmn -- 工作流业务逻辑模块
├ ├── logic-module-client-jpa -- Spring Security OAuth2 Client 基于 JPA 的存储功能逻辑模块
├ ├── logic-module-identity -- 身份认证功能业务逻辑模块
├ ├── logic-module-manage -- 系统管理功能业务逻辑模块
├ ├── logic-module-message -- 系统消息业务逻辑模块
├ └── logic-module-upms -- UPMS 业务逻辑模块
├── stirrup-message -- 消息模块
├ ├── message-autoconfigure -- 消息自动配置模块
├ ├── message-core -- 消息通用代码模块
├ ├── message-module-emqx -- emqx 功能封装模块
├ ├── message-module-websocket-reactive -- 基于 Reactive 环境下的 Websocket 功能封装模块
├ └── message-module-websocket-servlet -- 基于 Servlet 环境下的 Websocket 功能封装模块
├── stirrup-nosql -- 非结构化数据存储模块
├ ├── nosql-module-clickhouse -- ClickHouse 封装模块
├ ├── nosql-module-influxdb1 -- InfluxDB 1.X 封装模块
├ ├── nosql-module-influxdb2 -- InfluxDB 2.X 封装模块
├ └── nosql-module-tdengine -- TDengine 封装模块
├── stirrup-oauth2 -- OAuth2 认证模块
├ ├── oauth2-authentication-autoconfigure -- OAuth2 授权服务器基础内容自动配置模块
├ ├── oauth2-authorization-autoconfigure -- OAuth2 资源服务器基础内容自动配置模块
├ ├── oauth2-core -- OAuth2 通用代码模块
├ ├── oauth2-module-authentication -- Spring Authorization Server 授权服务器核心功能封装模块
├ ├── oauth2-module-authorization -- Spring Authorization Server 资源服务器核心功能封装模块
├ ├── oauth2-module-client -- Spring Security OAuth2 Client 核心功能封装模块
├ └── oauth2-module-extension -- Spring Authorization Server 功能扩展模块
├── stirrup-openapi -- 第三方 OpenApi 封装模块
├ ├── openapi-core -- Openapi 通用代码模块
├ ├── openapi-module-aliyun -- Aliyun Open API 封装集成模块(当前仅包含内容审核)
├ ├── openapi-module-easemob -- 环信 Open API 封装集成模块
├ ├── openapi-module-emqx -- Emqx Open API 封装集成模块
├ ├── openapi-module-nacos -- Nacos Open API 封装集成模块
├ ├── openapi-module-polaris -- Polaris Open API 封装集成模块
├ └── openapi-module-tianyan -- 天眼查 Open API 封装集成模块
├── stirrup-persistence -- 数据存储层模块
├ ├── persistence-core -- 数据存储通用代码模块
├ ├── persistence-module-sas-jpa -- 以 JPA 作为 SAS 核心数据访问层代码实现模块
├ ├── persistence-module-sas-mongodb -- 以 MongoDB 作为 SAS 核心数据访问层代码实现模块
├ ├── persistence-module-sas-redis -- 以 Redis 作为 SAS 核心数据访问层代码实现模块
├ ├── persistence-module-sys-cassandra -- 以 Cassandra 作为系统审计数据访问层代码实现模块
├ ├── persistence-module-sys-jpa -- 以 JPA 作为系统审计数据访问层代码实现模块
├ ├── persistence-sas-autoconfigure -- SAS 核心数据访问层模块自动配置
├ └── persistence-sys-autoconfigure -- 系统审计数据访问层模块自动配置
├── stirrup-rest -- 系统内置功能 REST 接口模块
├ ├── rest-module-manage -- 系统管理功能兼容 Reactive 和 Servlet 环境 REST 接口模块
├ ├── rest-module-oss -- 对象存储功能兼容 Reactive 和 Servlet 环境 REST 接口模块
├ ├── rest-module-reactive-message -- 消息功能 Reactive 环境 REST 接口模块
├ ├── rest-module-reactive-nacos -- Nacos 管理功能 Reactive 环境 REST 接口模块
├ ├── rest-module-servlet-identity -- 身份认证功能 Servlet 环境 REST 接口模块
├ ├── rest-module-servlet-message -- 消息功能 Servlet 环境 REST 接口模块
├ └── rest-module-servlet-upms -- UPMS 功能 Servlet 环境 REST 接口模块
├── stirrup-starter -- Starters
├ ├── cache-spring-boot-starter -- 缓存自动配置 Starter
├ ├── captcha-spring-boot-starter -- 验证码自动配置 Starter
├ ├── data-cassandra-spring-boot-starter -- Cassandra 数据库数据访问层自动配置 Starter
├ ├── data-mongodb-spring-boot-starter -- MongoDB 数据访问层自动配置 Starter
├ ├── data-rdbms-spring-boot-starter -- 关系型数据库数据访问层自动配置 Starter
├ ├── facility-alibaba-spring-boot-starter -- 面向 Spring Cloud Alibaba 的微服务基础设施适配 Starter
├ ├── facility-gateway-spring-boot-starter -- Alibaba Sentinel 在 Gateway 环境下基础设施适配 Starter
├ ├── facility-kafka-spring-boot-starter -- 基于 Kafka 的消息事件自动配置 Starter
├ ├── facility-original-spring-boot-starter -- 面向 Spring Cloud 原生全家桶的微服务基础设施适配 Starter
├ ├── facility-rabbitmaq-spring-boot-starter -- 基于 Rabbitmq 的消息事件自动配置 Starter
├ ├── facility-tencent-spring-boot-starter -- 面向 Spring Cloud Tencent 的微服务基础设施适配模块 Starter
├ ├── logging-spring-boot-starter -- 日志收集和聚合自动配置 Starter
├ ├── manage-spring-boot-starter -- 系统管理功能自动配置 Starter
├ ├── message-mail-sring-boot-starter -- 电子邮件消息自动配置 Starter
├ ├── message-mqtt-spring-boot-starter -- 基于 Mqtt 消息自动配置 Starter
├ ├── micrometer-spring-boot-starter -- 链路追踪及度量配置自动配置 Starter
├ ├── nosql-spring-boot-starter -- NoSQL 相关组件自动配置配置 Starter
├ ├── oauth2-client-spring-boot-starter -- Spring Security OAuth2 客户端自动配置 Starter
├ ├── oss-spring-boot-starter -- 基于 AWS SDK V2 兼容 Reactive 和 Servlet 环境的对象存储自动配置 Starter
├ ├── reactive-container-spring-boot-starter -- Reactive 容器基础配置自动配置 Starter
├ ├── reactive-message-spring-boot-starter -- Reactive 环境消息模块自动配置 Starter
├ ├── servlet-container-spring-boot-starter -- Servlet 容器基础配置自动配置 Starter
├ ├── servlet-message-spring-boot-starter -- Servlet 环境消息模块自动配置 Starter
├ ├── webmvc-spring-boot-starter -- WebMvc 类型应用自动配置 Starter
├ └── webflux-spring-boot-starter -- WebFlux 类型应用自动配置 Starter
├── stirrup-transform -- 数据迁移转换集成模块
├ ├── transform-module-bpmn -- 系统用户体系与 BPMN 用户体系数据同步模块
├ └── transform-module-emqx -- 基于 Spring Integration 的 Emqx 数据集成模块
├── stirrup-web -- Web 模块
├ ├── web-core -- Web 通用代码模块
├ ├── web-module-api -- Rest 接口通用代码模块
├ ├── web-module-reactive -- Reactive 环境 Web 服务专有基础代码模块
├ ├── web-module-service -- 微服务通用代码模块
└── └── web-module-servlet -- Servlet 环境 Web 服务专有基础代码模块