Quafer Engine 基于 Spring Boot 2.X, 是 Quafer Cloud 微服务架构内核核心组件库,可用于任何 Spring Boot 工程
--- ## 说明 自11月24日,Spring Boot 3.0 以及 Spring Cloud 2022.0.0、Spring Cloud Tencent 等全新版本发布,整个Java 社区也步入的 Java 17 和 Spring Boot 3 的新时代。紧跟 Java 技术和 Spring 社区的发展,让更多质量更好、性能更优的新特性服务于实际的开发工作,quafer Cloud 也同步进行升级及适配,开发了全新的 3.0 版本。 基于 Spring Authorization Server 1.0.0、Spring Boot 3.0.1、Spring Cloud 2022.0.0、Spring Cloud Tencent 1.8.2-2022.0.0、Spring Cloud Alibaba 2022.0.0.0-RC1、Nacos 2.2.1-RC 等主流技术栈开发的 quafer Cloud v3.0.1 已经正式发布,关注请移步 [v3.0.0 分支](https://gitee.com/dromara/quafer-cloud/tree/3.0.0/) ## 特点 1. 严格遵照“单一职责”原则,进行各个模块的划分和代码拆解。 2. 严格遵循 Spring Boot 编码规则和命名规则。 3. 大多数模块均支持 @EnableXXX注解 和 starter,让 Spring Bean 的注入顺序更加可控。 4. 模块化设计思想,通过 Bean 注入、以及丰富的自定义 @ConditionalXXX 注解,让模块的添加和删除更加灵活。 5. 各模块既可以综合在一起使用,也可以在其它 Spring Boot 工程中独立使用。 ## 优点 很多朋友不理解这样做的好处,明明很多代码都可以放在一起,为什么要拆分出这么多包、拆这么细? 这样做主要有以下优势: 1. 虽然模块看似很多,但是每个模块职责单一、代码清晰,更有利于聚焦和定位问题。 2. 通过对微服务架构的“庖丁解牛”,初学者不再需要在代码的海洋里“遨游”,通过针对性地了解各个模块,以点带面快速掌握微服务架构整体结构。 3. 模块间的依赖极大的降低,想要替换为 `Spring Authorization Server`,影响到的代码和范围将会很小。该工程也是使用 `Spring Authorization Server` 的前序工作 4. 每个模块均是最小化依赖第三包,规避依赖包过度依赖,特别是 starter 过多依赖,导致不可预知、难以调试、不好修改等问题。 5. 降低微服务系统代码量,独立组件可提前编译并上传至Maven仓库,降低工程代码编译耗时,改进 CICD 效率。 ## 工程结构 ``` quafer-engine ├── dependencies -- 工程Maven顶级依赖,统一控制版本和依赖 ├── documents -- 需要放置的文档位置 ├ └── readme -- README 相关素材放置目录 ├── engine-access -- 外部登录接入模块 ├ ├── access-core -- 外部登录通用代码组件 ├ ├── access-sdk-all -- 外部登录集成组件 ├ ├── access-sdk-justauth -- JustAuth登录组件 ├ ├── access-sdk-wxapp -- 微信小程序登录组件 ├ ├── access-sdk-wxmpp -- 微信公众号登录组件 ├ └── access-spring-boot-starter -- 外部登录 模块统一 Starter ├── engine-assistant -- 核心通用代码包 ├ ├── assistant-core -- 核心通用代码组件 ├ └── assistant-spring-boot-starter -- Assistant 模块统一 Starter ├── engine-cache -- 缓存模块 ├ ├── cache-core -- 缓存通用代码组件 ├ ├── cache-sdk-caffeine -- Caffeine 缓存配置相关代码组件模块 ├ ├── cache-sdk-jetcache -- JetCache 组件相关代码模块 ├ ├── cache-sdk-redis -- Caffeine 缓存配置相关代码组件模块 ├ ├── cache-sdk-redisson -- Redisson 组件相关代码模块 ├ └── cache-spring-boot-starter -- Cache 模块统一 Starter ├── engine-captcha -- 验证码模块 ├ ├── captcha-core -- 验证码共性通用代码 ├ ├── captcha-sdk-behavior -- 行为验证码组件(包括拼图滑块、文字点选) ├ ├── captcha-sdk-graphic -- 传统图形验证码组件(包括算数类型、中文类型、字母类型、GIF类型) ├ ├── captcha-sdk-hutool -- Hutool验证码组件(包括圆圈干扰、扭曲干扰、线段干扰) ├ └── captcha-spring-boot-starter -- Captcha 模块统一 Starter ├── engine-data -- 数据访问模块 ├ ├── data-core -- 数据访问共性通用代码 ├ ├── data-sdk-jpa -- JPA 及Hibernate 组件相关代码模块 ├ ├── data-sdk-mybatis-plus -- MybatisPlus 组件相关代码模块 ├ ├── data-sdk-p6spy -- P6spy 组件相关代码模块 ├ └── data-spring-boot-starter -- Data 模块统一 Starter ├── engine-event -- Spring 事件模块 ├ ├── event-core -- 事件组件共性代码模块 ├ ├── event-message-spring-boot-starter -- Kafka Message 统一 Starter ├ ├── event-pay-spring-boot-starter -- 支付事件统一 Starter ├ └── event-security-spring-boot-starter --安全事件统一 Starter ├── engine-facility -- 微服务基础设施模块 ├ ├── facility-core -- 基础设施共性通用代码 ├ ├── facility-sdk-log -- 微服务日志中心组件模块 ├ ├── facility-sdk-sentinel -- Sentinel 组件模块 ├ └── facility-spring-boot-starter -- Facility 模块统一 Starter ├── engine-message -- 消息模块 ├ ├── message-core -- 消息共性通用代码 ├ ├── message-sdk-mailing -- 站内消息、私信通用代码模块 ├ ├── message-sdk-websocket -- 基于 WebSocket 的消息代码模块 ├ └── message-spring-boot-starter -- Message 模块统一 Starter ├── engine-nosql -- Nosql 数据库接入管理模块 ├ ├── nosql-core -- nosql基础共性通用代码 ├ ├── nosql-sdk-couchdb -- Couchdb Nosql 数据库接入管理组件模块 ├ └── nosql-sdk-influxdb -- Influxdb 时序数据库接入管理组件模块 ├── engine-oauth2 -- OAuth2 认证模块 ├ ├── oauth2-core -- OAuth2 共性通用代码模块 ├ ├── oauth2-sdk-authentication -- Spring Authorization Server 认证逻辑模块 ├ ├── oauth2-sdk-authentication-server -- Spring Authorization Server 认证服务器管理基础模块 ├ ├── oauth2-sdk-authorization -- Spring Authorization Server 授权逻辑处理模块 ├ ├── oauth2-sdk-compliance -- Spring Authorization Server 应用安全合规支撑组件模块 ├ └── oauth2-sdk-data-jpa -- 基于 Spring Data JPA 封装的 Spring Authorization Server 数据访问代码模块 ├── engine-oss -- 对象存储模块 ├ ├── oss-core -- 对象存储共性通用代码 ├ ├── oss-sdk-minio -- Minio 组件模块 ├ └── oss-spring-boot-starter -- Oss 模块统一 Starter ├── engine-pay -- 支付模块 ├ ├── pay-core -- 支付共性通用代码 ├ ├── pay-sdk-alipay -- 支付宝支付组件模块 ├ ├── pay-sdk-all -- 支付方式整合组件模块 ├ ├── pay-sdk-wxpay -- 微信支付组件模块 ├ └── pay-spring-boot-starter -- Pay 模块统一 Starter ├── engine-rest -- 服务Rest接口模块 ├ ├── rest-core -- 服务Rest接口共性通用代码 ├ ├── rest-sdk-protect -- 前后端数据加密、接口幂等、防刷、Xss和SQL注入Rest API 防护组件模块 ├ └── rest-spring-boot-starter -- Rest 模块统一 Starter(包括通用CRUD代码) ├── engine-sms -- 短信接入模块 ├ ├── sms-core -- 短信共性通用代码模块 ├ ├── sms-sdk-aliyun -- 阿里云短信发送组件模块 ├ ├── sms-sdk-all -- 短信整合组件模块 ├ ├── sms-sdk-chinamobile -- 移动短信发送组件模块 ├ ├── sms-sdk-huawei -- 华为短信发送组件模块 ├ ├── sms-sdk-jd -- 京东短信发送组件模块 ├ ├── sms-sdk-netease -- 网易短信发送组件模块 ├ ├── sms-sdk-qiniu -- 七牛短信发送组件模块 ├ ├── sms-sdk-tencent -- 腾讯短信发送组件模块 ├ ├── sms-sdk-upyun -- 又拍短信发送组件模块 ├ ├── sms-sdk-yunpian -- 云片短信发送组件模块 ├ └── sms-spring-boot-starter -- SMS 模块统一 Starter ├── engine-web -- Web处理模块 ├ ├── web-core -- Web 应用共性通用代码模块组件 ├ ├── web-sdk-rest -- Web 应用基础支撑模块组件 ├ ├── web-sdk-scan -- 接口权限扫描组件模块 └── └── web-spring-boot-starter -- Web 模块统一 Starter ``` ## 阅读顺序 ### 一、关联性阅读 部分组件存在关联和组合性,建议按照以下顺序阅读和了解代码: 1. engine-assistant 2. engine-cache 3. engine-data 4. engine-web 5. engine-protect 6. engine-rest 7. engine-oauth2 8. engine-facility 9. engine-event 10. engine-message ### 二、独立性阅读 部分组件都是相对独立的,组件间的关联性非常弱。可分开独立阅读和了解代码: * engine-captcha * engine-oss * engine-pay * engine-temporal * engine-websocket ## 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request ## 交流反馈 - 欢迎提交[ISSUS](https://gitee.com/dromara/quafer-cloud/issues) ,请写清楚问题的具体原因,重现步骤和环境 ## 关联项目 - quafer 主工程地址:[https://gitee.com/dromara/quafer-cloud](https://gitee.com/dromara/quafer-cloud) - quafer 单体版示例工程地址:[https://gitee.com/quafer/quafer-cloud-athena](https://gitee.com/quafer/quafer-cloud-athena) - quafer 前端工程地址:[https://gitee.com/quafer/quafer-cloud-ui](https://gitee.com/quafer/quafer-cloud-ui)