Files
photography/backend/internal/svc/CLAUDE.md
xujiang 386666660f
Some checks failed
部署后端服务 / 🚀 构建并部署 (push) Failing after 7m20s
feat: 重构CLAUDE.md文档体系,实现模块化轻量级设计
- 重构根目录CLAUDE.md为项目总览(60行精简版)
- 细化backend模块CLAUDE.md为开发指南
- 新增各子模块CLAUDE.md文件:
  - api/desc/ - API定义模块
  - internal/handler/ - 请求处理器
  - internal/logic/ - 业务逻辑层
  - internal/model/ - 数据模型层
  - internal/middleware/ - 中间件层
  - internal/svc/ - 服务上下文
  - configs/ - 配置目录
  - deploy/ - 部署配置
  - pkg/ - 公共库
  - scripts/ - 工具脚本
  - configs/sql/ - SQL脚本
- 修复PostgreSQL SSL配置参数
- 清理旧的backend-old目录

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 13:16:01 +08:00

1.2 KiB

Service Context - 服务上下文

📁 文件结构

internal/svc/
└── servicecontext.go    # 服务上下文定义

🎯 核心职责

  • 服务初始化: 集中管理所有服务依赖
  • 依赖注入: 为handler提供所需组件
  • 生命周期: 管理服务生命周期

🔧 组件管理

type ServiceContext struct {
    Config        config.Config     // 配置
    DB            *gorm.DB         // 数据库连接
    UserModel     model.UserModel   // 用户模型
    PhotoModel    model.PhotoModel  // 照片模型
    CategoryModel model.CategoryModel // 分类模型
    Middleware    *middleware.MiddlewareManager // 中间件管理
}

🚀 初始化流程

启动服务 → 加载配置 → 初始化数据库 → 创建模型 → 注册中间件 → 启动HTTP服务

📋 扩展方式

  1. 新增模型: 在ServiceContext中添加新字段
  2. 初始化: 在NewServiceContext中初始化
  3. 使用: 在handler中通过svc访问

🎯 设计模式

  • 单例模式: 整个服务生命周期只创建一次
  • 依赖注入: 通过构造函数传递依赖
  • 门面模式: 为上层提供统一的访问接口