依赖注入:手工装配与 wire/dig/fx/do
在 NewUserService 这类构造函数中直接调用 sql.Open 是典型的反模式:测试无法注入替身,跨环境也无法复用。根源是依赖注入未落实:组件只声明所需依赖,创建与组装由调用方负责。在 Go 中,多数场景的依赖注入不需要库:构造函数传参,main 中逐个创建、按序组装。Java 式注解扫描加运行时容器在 Go 生态中很少见,标准库与主流开源项目的"依赖注入"都相当朴素:装配代码显式可读,启动路径才可预测、可调试。
10 min read