# dependency-injection Specification ## Purpose TBD - created by archiving change refactor-framework-cleanup. Update Purpose after archive. ## Requirements ### Requirement: Bootstrap Package 系统 SHALL 提供 bootstrap 包,统一管理所有业务组件的初始化和依赖注入。 #### Scenario: 初始化所有组件 - **WHEN** 调用 Bootstrap(deps) - **THEN** 自动初始化所有 Store、Service 和 Handler - **AND** 返回可直接用于路由注册的 Handlers 结构体 #### Scenario: 依赖注入 - **WHEN** 初始化 Service 时 - **THEN** 自动注入所需的 Store 依赖 - **AND** 自动注入所需的其他 Service 依赖 #### Scenario: 添加新业务模块 - **WHEN** 需要添加新的业务模块 - **THEN** 只需修改 bootstrap 包 - **AND** main.go 无需任何修改 - **AND** TODO 注释标记扩展点 ### Requirement: Main Function Simplification main 函数 SHALL 只负责编排,不包含具体业务组件初始化逻辑。 #### Scenario: 标准启动流程 - **WHEN** 应用启动 - **THEN** main 函数执行以下步骤: 1. 加载配置 2. 初始化基础依赖(DB、Redis、Logger) 3. 调用 bootstrap.Bootstrap() 初始化业务组件 4. 设置路由和中间件 5. 启动服务器 #### Scenario: 启动失败处理 - **WHEN** 任何初始化步骤失败 - **THEN** 记录错误日志 - **AND** 程序以非零状态码退出 ### Requirement: Dependencies Encapsulation 系统 SHALL 使用结构体封装基础依赖和业务组件。 #### Scenario: Dependencies 结构体 - **WHEN** 传递基础依赖时 - **THEN** 使用 Dependencies 结构体封装 DB、Redis、Logger #### Scenario: Handlers 结构体 - **WHEN** 返回业务处理器时 - **THEN** 使用 Handlers 结构体封装所有 Handler - **AND** 结构体包含 TODO 注释标记未来扩展点