写Android的都知道一个噩梦:20个页面、10个API、5个数据库,全要靠构造函数一层层往下传。代码像俄罗斯套娃,改一个参数,上下游全得跟着动。

Google 2015年推了Dagger 2,名义上是解药,实际成了另一门手艺。它靠注解处理器在编译期生成代码,把"谁依赖谁"这件事从运行时挪到编译时检查。换句话说,出错提前爆,而不是等到用户闪退。

但代价是 steep learning curve——新手面对@Component、@Module、@Provides 这套术语,往往先懵两周。有开发者吐槽:「用Dagger省下的时间,全花在学Dagger上了。」

现在Kotlin生态里Koin、Hilt这些后辈更轻量,Dagger反而像老派的机械表:精密、可靠,但得专门学怎么上发条。Google官方去年把Hilt(基于Dagger的封装)定为推荐方案,原版Dagger渐渐退居幕后。

不过那些早年啃过Dagger源码的人,现在看任何依赖注入框架都觉得似曾相识——毕竟后来的设计,多少都抄了点作业。