@
kran 在有注解之前,Spring 都是通过 XML 装配,有了注解之后,大家用脚投票投的注解,没几个人想回到动辄手写上千行 XML 的年代。注解的“滥用”是多年下来自然选择的结果,事实上 Spring 除了注解和 XML ,也支持手写代码的方式装配。注解和 DI 是好东西,比较新的框架 quarkus 也选择了这个姿势,注解和 DI 带来的问题大家都知道,Spring 的解题思路是 AOT ,quarkus 的接替思路是 build-time oriented dependency injection ,殊途同归,都把本来运行阶段才做的工作前置到 build 阶段。
每个人习惯不同,我在使用一个框架前,会把文档完整的过一遍,我不觉得看个小几百页文档能影响我学习其它东西。比如我使用 Vert.x 前,官网文档过了一遍,顺便把 netty 也过了一遍,实际也花不了多少时间。这些也都不会白看,后续学习 quarkus 时就流畅的多,甚至第一次学习 php laravel 时有似曾相识的感觉。
各个框架都是现有技术的应用和组合,也许有一些地方做的选择不同,但大体上也就那么几种,用户会用脚投票,经过长时间的检验,淘汰掉那些不那么适合项目的选项。对大部分开发来说,历史包袱不太大的项目,你不能选的那几个选项,可能在项目初期被人权衡利弊之后删掉了。
我经历过几个从小而美轮子演化成大而全的项目,有些甚至在发展了几年后整个丢弃掉,来个大版本升级,直接基于开源方案二次开发了。
现在我对大而全框架没工作头几年那么排斥了,我只有两个要求,我用不到的功能不要消耗我的 CPU 和内存,我要扩展时要有足够的弹性。