architecture.md
3.7 KB
SMF Core 架构文档
1. 系统概述
SMF Core 是一个模块化设计的核心服务框架,采用分层架构模式,提供了灵活、可扩展的数据访问和业务处理能力。本文档描述了框架的整体架构设计、主要组件及其交互关系。
2. 架构层次
SMF Core 框架采用经典的分层架构,从上到下依次为:
-
接口层 (API Layer)
- 提供对外的服务接口
- 处理请求路由和参数验证
-
业务逻辑层 (Service Layer)
- 实现核心业务逻辑
- 协调各组件之间的交互
-
对象映射层 (Mapper Layer)
- 负责DTO和Entity之间的转换
- 简化数据传输和对象关系映射
-
数据访问层 (DAO Layer)
- 提供数据持久化和检索功能
- 封装数据库操作细节
-
基础设施层 (Infrastructure Layer)
- 提供通用工具和辅助功能
- 包括国际化、日志、配置管理等
3. 核心组件
3.1 AbstractBaseDao
抽象基础数据访问对象,提供MongoDB数据操作的核心实现:
-
主要功能:
- 通用CRUD操作
- 分页查询支持
- 多条件查询
- 数据排序和过滤
-
设计特点:
- 使用泛型支持不同类型的实体
- 提供可扩展的查询接口
- 内置事务支持
3.2 BaseMapper
对象映射框架,提供DTO和Entity对象间的转换功能:
-
主要功能:
- 单个对象转换
- 集合对象批量转换
- 支持自定义转换规则
-
设计特点:
- 接口式设计,便于实现和扩展
- 类型安全的转换方法
- 支持null值处理
3.3 国际化支持组件
提供多语言国际化功能的核心组件:
-
主要功能:
- 多语言消息资源管理
- 动态语言切换
- 支持语言地区设置
-
设计特点:
- 基于Spring MessageSource构建
- 支持属性文件和JSON格式的资源文件
- 缓存优化的消息检索
3.4 日志记录系统
统一的日志管理组件:
-
主要功能:
- 多级日志记录
- 自定义日志格式
- 日志轮转和归档
-
设计特点:
- 基于Log4j2实现
- 支持多种输出目标
- 异步日志处理
4. 组件交互
4.1 数据流程
系统处理请求的数据流程如下:
- 客户端发起请求到API层
- API层进行参数验证并调用相应Service
- Service层执行业务逻辑,必要时调用Mapper进行对象转换
- Service层通过DAO层与数据库交互
- DAO层执行数据操作并返回结果
- 结果沿调用链返回给客户端
4.2 依赖关系
各核心组件之间的依赖关系:
- Service组件依赖Mapper和DAO组件
- Mapper组件作为独立功能,不依赖其他核心组件
- DAO组件依赖基础设施层提供的工具类
- 所有组件共享国际化和日志系统
5. 扩展性设计
5.1 接口扩展
框架提供了多个扩展点,允许用户自定义功能:
- 自定义Repository:继承AbstractBaseDao实现特定的数据访问需求
- 自定义Mapper:实现BaseMapper接口提供特定的对象转换逻辑
- 自定义转换器:实现Converter接口支持复杂对象转换
5.2 配置扩展
支持多种配置方式:
- JSON配置文件
- Spring环境变量
- 注解配置
- 运行时动态配置
6. 性能考量
6.1 缓存策略
- 多级缓存设计
- 查询结果缓存
- 配置缓存
- 对象转换缓存
6.2 并发处理
- 线程安全设计
- 异步操作支持
- 并行查询优化
7. 安全设计
7.1 数据安全
- 敏感数据加密
- 输入验证和净化
- 防SQL注入保护
7.2 访问控制
- 基于角色的权限控制
- 细粒度的API访问限制
- 操作审计日志
最后更新时间:2024年