architecture.md 3.7 KB

SMF Core 架构文档

1. 系统概述

SMF Core 是一个模块化设计的核心服务框架,采用分层架构模式,提供了灵活、可扩展的数据访问和业务处理能力。本文档描述了框架的整体架构设计、主要组件及其交互关系。

2. 架构层次

SMF Core 框架采用经典的分层架构,从上到下依次为:

  1. 接口层 (API Layer)

    • 提供对外的服务接口
    • 处理请求路由和参数验证
  2. 业务逻辑层 (Service Layer)

    • 实现核心业务逻辑
    • 协调各组件之间的交互
  3. 对象映射层 (Mapper Layer)

    • 负责DTO和Entity之间的转换
    • 简化数据传输和对象关系映射
  4. 数据访问层 (DAO Layer)

    • 提供数据持久化和检索功能
    • 封装数据库操作细节
  5. 基础设施层 (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 数据流程

系统处理请求的数据流程如下:

  1. 客户端发起请求到API层
  2. API层进行参数验证并调用相应Service
  3. Service层执行业务逻辑,必要时调用Mapper进行对象转换
  4. Service层通过DAO层与数据库交互
  5. DAO层执行数据操作并返回结果
  6. 结果沿调用链返回给客户端

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年