远离 Sprint Boot,尤其是在工作中

发布于:12/11/2025 16:37:51 · Programming · Technology

Spring Boot 和 Spring MVC 在中国的大厂里特别常见,以至于早期的培训基本上教的都是这些,然后 + Vue 2 或者 React,基本完整了。

Spring MVC 跟 ASP.NET 一样是一个老古董了,有很久的历史,也有很多的历史包袱。Spring Boot 的出现就是为了解决这些问题并且让新人更好上手的。基本上 Spring Boot 就是 Spring 上的脚手架,为你配置了很多东西,但是这个脚手架本身也要很多配置。

鉴于什么年代了还有人单独用 Spring,所以这里讲的都是 Spring Boot。

而 Spring 的特色就是配置一大堆,以前是在 XML 里写 Bean 的配置,现在是在代码里面写 Bean 的配置。换汤不换药。结果就是写了半天代码,不知道自己在干什么,光在配置 Spring 了。

这种感觉还给人带来了超级多不透明性,一个请求 Call Stack 超级深,前面全是 Spring Framework 里的 internal callstack,直到后面才是自己的代码。而 ASP.NET 到好一点,当然最好的还是这种 golang 等新微小框架,或者说都不能是框架,而是库做的 app,stacktrace 清清楚楚,一看就懂。

这种复杂性还养活了一种很奇葩的教学,带你研究 Spring 源码。我想 Spring 这东西不也是个大号屎山,除了用的人多了一点有什么特殊的。但是看可能先进,但这些东西这些年早就玩烂了。我是没看过类似的东西,不知道他们在讲什么,但对我来说估计多半不重要。

Spring 很完善,问题是就是太完善了。让人遇到问题都不动脑子。Spring Boot 包了微服务(虽然有不同厂商的解决方案)、数据库、消息队列、Reactive 等等东西,加点配置就好。让人技术选型都不用思考,造成大量技术债外借。等到要还的时候就知道这个的厉害了,但很明显,借债的人又不用还债。那就随他去吧。

当今的程序员似乎更倾向于去研究怎么 scale 而不是怎么优化自己的代码让系统不用 scale。这个不是 Spring 的问题,但是 JVM 吃这么多内存还是有一部份它的责任在的。

不过很乐于看到的是现在很多大公司都开始逐渐脱离 Spring 的苦海了,我知道的好像之后 Alibaba 还被 Spring 束缚在过去里。

没有完美的代码,代码都是改出来了,而且要跟着时代与时俱进。因此不如放下过去的老古董,是时候向前看看了。

如果你对 Java 有什么情节的话,也可以试试看 Quarkus,短暂用过一小会,体验比 Spring 好太多。此外如果你写 Go 也不要无脑选 Gin,用的人太多了,也没什么明显的优势,不如用 Gofiber,只不过他们好像要出 v3 了,小心被破坏性更新炸到。