# 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助手生成和维护*