Files
contract-manager/docs/task/server模块service缓存调整为Vo对象/TODO_server模块service缓存调整为Vo对象.md
songqq 64471b46f8 docs: 更新server模块service缓存调整为Vo对象的文档标题
将所有相关文档标题从"IEntityService接口泛型修改任务"统一修改为"Server模块Service缓存调整为Vo对象",保持文档命名一致性
2025-09-28 19:19:01 +08:00

6.3 KiB
Raw Blame History

Server模块Service缓存调整为Vo对象待办事项

1. 代码实现阶段待办

1.1 缓存策略设计

  • 设计缓存对象转换机制在缓存写入前将实体对象转换为VO对象
  • 确保所有VO类都实现Serializable接口
  • 验证VO对象的序列化安全性避免引用不可序列化对象
  • 设计Redis缓存键命名规范考虑使用命名空间或前缀
  • 实现Redis连接失败时的降级策略

1.2 试点Service类修改

  • 选择一个典型的Service类如CompanyCustomerFileTypeService进行试点修改
  • Service类继承IEntityService接口泛型类型保持为Model实体类
  • Service类继承QueryService接口泛型类型修改为Vo视图对象
  • 逐一修改实现的接口方法,添加数据转换逻辑
  • 验证修改后的代码能够编译通过
  • 编写单元测试验证功能正确性

1.2 批量Service类修改

  • 制定批量修改计划,按照模块或功能分组
  • 逐一修改每个注解了@CacheConfig的Service类
  • Service类继承IEntityService接口泛型类型保持为Model实体类
  • Service类继承QueryService接口泛型类型修改为Vo视图对象
  • 应用统一的数据转换机制
  • 记录修改过程中的问题和解决方法
  • 执行编译检查确保所有修改正确

2. 数据转换相关待办

2.1 转换逻辑实现

  • 设计并实现实体类到VO类的转换方法
  • 设计并实现VO类到实体类的转换方法
  • 考虑添加通用的转换工具类
  • 处理空值和异常情况

2.2 Specification处理

  • 研究如何处理getSpecification方法的泛型修改
  • 确定是否需要保留基于实体类的Specification实现
  • 设计可能的解决方案,如创建适配器或转换层

3. 依赖组件分析和修改

3.1 依赖分析

  • 搜索所有调用修改后Service类的组件Controller、其他Service等
  • 分析这些组件如何使用Service类的方法
  • 识别需要修改的依赖组件
  • 特别关注WebSocket服务组件WebSocketServerCallbackManager、WebSocketServerTaskManager
  • 分析WebSocket服务如何通过反射调用IEntityService接口的方法
  • 识别WebSocket服务中依赖IEntityService泛型参数的方法

3.2 依赖修改

  • 修改受影响的Controller类
  • 修改受影响的其他Service类
  • 验证依赖修改的正确性
  • 处理可能的级联依赖问题
  • 修改WebSocketServerCallbackManager类
    • 更新createNewEntity、findEntityTypeInInterfaces等依赖泛型参数的方法
    • 调整invokerFindByIdMethod、invokerFindAllMethod等反射调用方法
    • 确保能够正确处理VO类型的返回值
  • 修改WebSocketServerTaskManager类
    • 确保任务执行流程能够适应IEntityService接口的泛型变化
    • 调整任务处理逻辑确保能够正确处理VO类型的数据
  • 添加类型安全检查,防止类型转换错误
  • 验证WebSocket服务组件修改的正确性

4. 测试和验证待办

4.1 测试用例编写

  • 为每个修改后的Service类编写单元测试
  • 编写集成测试验证Service类与其他组件的交互
  • 测试数据转换的正确性和性能
  • 编写缓存功能专项测试用例
    • 验证Redis中只存储VO对象不存储实体对象
    • 测试VO对象的序列化和反序列化正确性
    • 测试Redis连接失败时的降级功能
    • 测试缓存清理后的系统运行状态
  • 编写WebSocket服务专项测试用例
    • 测试WebSocketServerCallbackManager的类型处理逻辑
    • 验证createNewEntity、invokerFindByIdMethod等方法能够正确处理VO类型
    • 测试WebSocketServerTaskManager的任务执行流程
    • 验证WebSocket服务的整体功能

4.2 测试执行和问题修复

4.2 测试执行和问题修复

  • 执行所有测试用例
  • 分析测试结果,记录发现的问题
  • 修复测试中发现的问题
  • 重新执行测试,确保所有问题都已解决

5. 配置和部署相关待办

5.1 Redis缓存清理

  • 制定Redis缓存清理计划
  • 编写脚本查找并删除所有旧的实体类缓存
  • 确保在新代码部署前完成缓存清理
  • 验证清理效果,确保没有旧缓存残留

5.2 缓存配置检查

  • 验证缓存配置在修改后仍然有效
  • 检查缓存键表达式是否需要调整
  • 测试缓存的读写和失效机制确保只使用VO对象

5.2 部署准备

  • 准备部署文档,说明修改内容和注意事项
  • 考虑分阶段部署策略,降低风险
  • 准备回滚方案,以防出现严重问题

6. 文档更新待办

6.1 代码文档更新

  • 为修改后的Service类添加JavaDoc注释
  • 更新相关接口和类的文档
  • 确保文档与代码的一致性

6.2 项目文档更新

  • 更新ACCEPTANCE文档记录测试结果和完成情况
  • 更新FINAL文档添加实际执行结果
  • 归档所有任务文档

7. 其他待办事项

7.1 缓存管理机制建立

  • 建立缓存键命名规范文档
  • 定义缓存过期策略
  • 设置Redis监控措施定期检查缓存状态
  • 建立缓存清理和刷新的标准流程

7.2 性能优化

  • 分析数据转换可能带来的性能影响
  • 考虑添加转换结果缓存或其他优化手段
  • 进行性能测试,确保修改不会导致性能退化

7.2 知识分享

  • 组织团队成员进行知识分享,介绍修改内容和技术方案
  • 记录经验教训,为后续类似任务提供参考
  • 考虑是否需要更新项目开发规范

8. 支持需求

以下是在实施过程中可能需要的支持:

8.1 技术支持

  • 数据转换框架选择和实现建议
  • Specification泛型修改的最佳实践
  • 缓存配置优化建议
  • Redis缓存管理和序列化最佳实践
  • 分布式缓存问题排查和解决支持

8.2 资源支持

  • 代码审查资源
  • 测试环境和测试数据准备
  • 部署和监控资源

8.3 其他支持

  • 与相关团队的协调和沟通
  • 变更管理和审批流程支持
  • 风险评估和缓解策略建议

更新记录:

  • 创建日期: -
  • 更新日期: -
  • 更新内容: -