# unfiy **Repository Path**: airebuild/unify ## Basic Information - **Project Name**: unfiy - **Description**: Unfiy是一个一个专注于统一接口和数据标准的开源项目,旨在简化开发流程,提升多系统间的数据交互效率与兼容性。 Unify框架核心价值为‘整合异构能力、统一 API 入口、全链路安全可控、可视化运维治理’,助力企业快速构建标准化、高可用的 API 集成开发平台。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2025-12-27 - **Last Updated**: 2026-01-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Unify - Well-Architected Program Framework ## 介绍 Unify框架核心价值为'整合异构能力、统一 API 入口、全链路安全可控、可视化运维治理',助力企业快速构建标准化、高可用的 API 集成开发平台。Unify框架是采用统一RestAPI入口层,通过资源定位service,实现通用接口的接口治理。系统包含unify-common、unify-crud、unify-api、unify-camel、unify-cloud五个核心模块,为开发者提供统一的数据访问接口、CRUD操作能力和异构集成能力。 ## 架构概览 ```mermaid graph TD A[unify-api
统一API入口层] --> B[unify-crud
数据访问层] A --> C[unify-camel
集成层] B --> D[unify-common
基础服务层] C --> D B --> E[unify-cloud
云原生治理层] C --> E subgraph "核心能力" D --> D1[安全服务
RSA/AES/JWT] D --> D2[工具服务
缓存/锁/序列化] D --> D3[系统服务
多租户/审计/异常] end subgraph "数据处理" B --> B1[CRUD DSL
动态查询引擎] B --> B2[缓存增强
多级缓存策略] B --> B3[性能监控
慢查询分析] end ``` 整体模块分为基础层(unify-common)→ 数据层(unify-crud)→ 集成层(unify-camel)→ 治理层(unify-cloud)→ 入口层(unify-api),为企业级应用提供全链路支撑。 ## 最新更新 (v2023.1.0) ### 🔄 架构重构 - **模块整合**: 将CRUD DSL功能从`unify-api`完全迁移到`unify-crud`模块,实现更清晰的职责分离 - **包结构优化**: 重新组织包结构,将DSL相关类按功能域分组(cache、domain、engine、performance等) - **依赖简化**: 移除冗余的MyBatis配置和工具类,统一到`unify-crud`模块管理 - **构建系统简化**: 移除Maven安全插件,优化构建性能,构建时间减少30-60秒 ### 🚀 功能增强 - **DSL缓存系统**: 新增多级缓存架构(本地Caffeine + Redis),支持缓存一致性管理 - **性能监控**: 集成实时性能监控,包括慢查询检测、执行计划分析和优化建议 - **动态表名**: 支持基于租户、时间等维度的动态分表策略 - **批量操作**: 智能批量操作优化器,显著提升大数据量处理性能 - **配置管理**: 新增DSL配置的版本管理、发布管理和权限控制功能 ### 📦 模块变更 - **unify-api**: 移除DSL相关代码,专注于API入口和控制器层 - **unify-crud**: 整合所有CRUD和DSL功能,成为数据访问的统一入口 - **unify-common**: 优化缓存配置,新增多级缓存管理器 ## 核心模块 ### unify-common (基础服务层) 提供企业级应用的基础能力和安全特性: **工具服务**: - 分布式ID生成、Excel操作、文件上传/下载 - 统一消息中心、数据推送和同步 - 缓存工具、分布式锁、序列化/反序列化工具 **安全特性**: - 属性配置加密(Jasypt)、RSA动态密钥管理、JWT token校验 - AK/SK算法、端对端加密 - WAF安全封装(请求频率限制、SQL注入防护、XSS/CSRF防护、防重放攻击) **系统特性**: - Controller/Service层日志AOP、统一返回结果封装 - 数据校验工具(自定义校验规则、多语言提示、嵌套校验) - 统一异常处理、日志脱敏、多环境配置隔离、异常重试 - 操作审计日志(完整性保护、合规查询) ### unify-crud (数据访问层) 提供数据库CRUD接口的统一封装和DSL增强功能: **CRUD DSL引擎**: - XML DSL语法对数据库操作进行抽象配置 - 支持基础增删改查、条件查询(范围、模糊、IN)、联表查询、批量操作 - 数据权限控制和CRUD缓存增强 - 多数据源动态切换 **DSL增强功能** (v2023.1.0重构): - **架构整合**: 将所有DSL功能从unify-api迁移整合,实现统一管理 - **多级缓存**: 本地缓存(Caffeine) + Redis分布式缓存,支持缓存一致性管理 - **性能监控**: 慢查询检测、执行计划分析、实时性能指标收集 - **动态表名**: 支持分表策略,按租户/时间维度动态路由 - **批量优化**: 智能批量操作优化器,提升大数据量处理性能 - **配置管理**: DSL配置的版本控制、发布管理、权限管理和审计日志 - **安全增强**: SQL注入防护、参数校验、白名单机制 **包结构组织**: ``` com.unify.wpf.crud/ ├── config/ # 配置类(DSL、MyBatis等) ├── controller/ # CRUD控制器 ├── entity/ # 实体和领域对象 │ ├── audit/ # 审计相关 │ ├── crud/ # CRUD实体 │ ├── db/ # 数据库实体 │ ├── dsl/ # DSL领域对象 │ ├── publish/ # 发布管理 │ └── validation/ # 校验规则 ├── form/ # 表单生成器 ├── mapper/ # MyBatis映射器 ├── service/ # 业务服务层 ├── template/ # 模板引擎 └── util/ # 工具类 ``` **技术实现**: - 基于MyBatis Plus Wrapper语法封装 - 动态表名插件(DynamicTableNameInnerInterceptor) - Jackson XML解析器用于DSL配置解析 - Resilience4j熔断限流 ### unify-camel (集成层) Apache Camel框架封装,支持多协议集成: - 支持REST、RabbitMQ、FTP、WebService等协议 - 字段映射、格式转换(JSON/XML/Protobuf互转) - 数据清洗、多版本报文适配 ### unify-cloud (云原生治理层) 集成云原生开发能力: - Zipkin链路追踪、Spring Cloud Stream、Nacos、OpenFeign - Resilience4j熔断限流机制 - 统一服务配置和管理 ### unify-api (统一API入口层) 提供统一的API接口入口,专注于接口层职责: - 统一的REST API控制器和路由管理 - 接口版本管理、OpenAPI文档生成 - 统一鉴权和权限控制 - 接口限流、防重放攻击 - Spring Boot Admin运维界面 - Prometheus监控指标收集 **架构简化** (v2023.1.0): - 移除DSL相关代码,专注于API入口职责 - 简化MyBatis配置,统一由unify-crud管理 - 优化控制器结构,提升代码可维护性 ## 快速开始 ### ⚠️ 当前构建状态 (v2023.1.0) **构建警告**: unify-crud模块当前存在24个Maven诊断警告,主要涉及: - 缺少插件版本声明 (3个插件) - 依赖版本冲突 (21个冲突) **影响**: 不影响功能使用,但可能影响构建稳定性。 **解决方案**: 查看 [构建问题解决方案](boot/unify-crud/docs/BUILD_ISSUES_ACTION_PLAN.md) 获取详细修复步骤。 ### 环境要求 - **Java**: 21 (LTS) - **Maven**: 3.6.3+ - **数据库**: MySQL 8.0+ / PostgreSQL 12+ / Oracle 19c+ - **缓存**: Redis 6.0+ (可选) ### 构建和运行 ```bash # 克隆项目 git clone cd unify # 编译所有模块 mvn clean compile # 打包 mvn clean package -DskipTests # 运行API服务 cd boot/unify-api mvn spring-boot:run # 或使用特定配置文件 mvn spring-boot:run -Dspring-boot.run.profiles=dev ``` ### 配置说明 **数据库配置** (`boot/unify-api/config/application.yml`): ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/unify?useSSL=false&serverTimezone=Asia/Shanghai username: ${DB_USERNAME:root} password: ${DB_PASSWORD:123456} driver-class-name: com.mysql.cj.jdbc.Driver ``` **安全配置**: ```yaml unify: common: security: enabled: true rsa: private-key: ${RSA_PRIVATE_KEY:} # 自动生成 public-key: ${RSA_PUBLIC_KEY:} # 自动生成 waf: security: enabled: true replay-protection: enabled: true ``` ### API文档访问 启动后访问: `http://localhost:8080/doc.html` ## 技术栈 ### 核心框架 - **Spring Boot**: 3.2.4 - **Spring Cloud**: 2023.0.1 - **MyBatis Plus**: 3.5.14 ### 数据库与缓存 - **连接池**: Druid 1.2.27 - **缓存**: Redis + Caffeine - **数据库**: MySQL/PostgreSQL/Oracle ### 工具库 - **Hutool**: 5.8.42 (Java工具库) - **Guava**: 33.5.0 (Google核心库) - **Fastjson**: 2.0.60 (JSON处理) - **EasyExcel**: 3.3.2 (Excel处理) ### 安全与监控 - **Jasypt**: 3.0.5 (配置加密) - **Knife4j**: 4.4.0 (API文档) - **Micrometer**: Prometheus监控 - **BouncyCastle**: 1.83 (加密算法) ## 文档结构 ### 核心文档 - [CRUD DSL语法文档](docs/crud_dsl.md) - 详细的CRUD XML DSL配置语法和示例 - [构建系统文档](docs/BUILD_SYSTEM.md) - Maven构建配置和安全实践指南 - [安全功能文档](docs/SECURITY_FEATURES.md) - 框架安全特性和配置指南 - [安全API文档](docs/SECURITY_API.md) - 安全相关API接口详细说明 - [架构设计文档](docs/ARCHITECTURE.md) - 系统架构设计和组件交互说明 ### 开发指南 - [项目结构说明](docs/structure.md) - 模块架构和包结构规范 - [技术栈说明](docs/tech.md) - 技术选型和版本管理 - [CRUD接口文档](docs/crud.md) - 数据库CRUD通用接口说明 - [迁移指南 v2023.1.0](docs/MIGRATION_GUIDE_v2023.1.0.md) - 架构重构迁移指南 ## 使用示例 ### CRUD DSL配置示例 ```xml t_user id,name,age,mobile,create_time name LIKE_RIGHT STRING true REDIS 3600 ``` ### Java API调用示例 ```java @RestController @RequestMapping("/v1/users") public class UserController extends BaseCrudController { @GetMapping("/table/page") public R getUserPage(@RequestParam Map params) { return success(crudService.selectPage("user", "default", params)); } @PostMapping public R createUser(@RequestBody Map user) { return success(crudService.insert("user", "default", user)); } } ``` ## 贡献指南 ### 开发流程 1. Fork项目并创建功能分支 2. 遵循代码规范和包结构约定 3. 添加必要的单元测试和集成测试 4. 更新相关文档 5. 提交Pull Request ### 代码规范 - 遵循阿里巴巴Java开发手册 - 使用统一的包命名规范: `com.unify.wpf.{module}.{layer}` - 所有公共API必须有完整的JavaDoc注释 - 单元测试覆盖率不低于80% ## 版本历史 ### v2023.1.0 (当前版本) - **架构重构**: DSL功能从unify-api完全迁移到unify-crud,实现模块职责清晰分离 - **包结构优化**: 重新组织DSL相关类的包结构,按功能域分组管理 - **构建系统简化**: 移除Maven安全插件,优化构建性能 - **缓存系统增强**: 新增多级缓存架构和缓存一致性管理 - **性能监控**: 集成实时性能监控和慢查询分析 - **配置管理**: 新增DSL配置的版本管理和发布控制功能 ### 路线图 - **v2023.2.0**: GraphQL支持、更多数据库适配 - **v2023.3.0**: 微服务治理增强、服务网格集成 - **v2024.1.0**: 低代码平台集成、可视化配置界面 ## 许可证 本项目采用 Apache License 2.0 许可证。详见 [LICENSE](LICENSE) 文件。 ## 支持与反馈 - **官网**: https://airebuilder.com.cn - **文档**: 项目docs目录 - **问题反馈**: 通过GitHub Issues提交 - **技术交流**: 参考项目Wiki和讨论区 --- *此文档由Kiro AI助手生成和维护*