Spring 话题

我从来不用 spring,项目再大也不会考虑 spring 那套模式。什么依赖注入控制反转,叠床架屋,对开发和运维可以说有害无益。上文 zz Spring 是一种反模式 - Inshua - 博客园 也是一篇鄙视 spring 的雄文。

但是 spring 在 Java 世界非常流行,甚至有 Java 程序员声称用 Java 是因为有 spring。这让我大惑不解。spring 集成的 tomcat 之类没有一个适合高并发的,用 spring 开发 web 能到 c2k 已经谢天谢地了。

再说我也不是没见过 spring 项目,不就是把一堆东西堆在配置和注解的诡异代码?

须知一个项目的配置是有限的,配置文件足矣。spring 的项目几乎任何东西都可以配置,这就有点走火入魔了。在我看来,如果 XML 这么有用,XML 就应该成为编程语言,可惜它不是。前文 声明式编程的没落 - Inshua - 博客园 已经讨论过这个事情,这里不赘述。

要之,spring 这种打法就是对 Java 语言设计的一个嘲讽。Java 面向对象?NO,我 spring 面向接口!就像一个 COM 程序员跑进了 Java 世界,天哪!你们的类可以没有接口!这怎么行!大家怎么合作!也很像 C 程序员跑进 OO 世界:没有头文件怎么行!

只要我们多进行 OO 实践,不按 spring 的思路考虑问题,类就会无处不在,而不是接口。那样也能充分享受到 Java 带来的类的闭包性——内部类。

那么为什么 spring 这么流行,甚至很多人将 Java 开发等同于 spring 呢?我一直在找答案,今天终于得到了一位热心网友的解答。

好了,结论很清晰了。

理解你说的了,这么看来spring和微服务很像,都是人太多造成的。spring从工种切,高级工种甚至不需要摸低级工种创造的类名(@AutoWired)。微服务则从功能切,各有各的山头。

长期以来我的想法是,程序员个个都是产品创造者,我甚至主张程序员应该同时懂前端后端,自己负责自己的功能。之所以要很多人是因为功能多,需要多人合作,但是这些人大致是平行关系,即使有分工也互相都了解一点对方的技术。

spring 的组织政治和我设想的差别太大,这位网友也一样

我当时有一个暴论,但凡对编程有点热情的人都不会碰这坨💩。但是现实是,你需要组织一大群毫无热情的人干活…
你要让我选,我永远选小而精的小团队手工打造。但没人让我选…

这就是为什么我和 spring 这么格格不入了。

很多技术并非要解决技术问题。《代码3.0》有句经典名言“代码即法律,架构即政治”,这话放在 spring 和微服务,具有一种讽刺意味的贴合。

另一方面,我们做技术选型时一定要诚实,不要被各种愚昧的风潮左右。尤其是大公司的风潮,什么 spring、微服务、中台。我们要相信,团队既然是严格把关进来的,都是希望干点实事且有能力干实事的,他们早晚会干的和我们一样好,甚至超过我们。我们不能采用 spring 这种搞技术种姓制度的框架,让新人一辈子当低级程序员。作为程序员也要清醒,一个 web 接口,从 request 到 response 是彻底公开的规范,好的技术应当竭力让这个开发过程轻松,让产品运行高效。

我们也要尽量避免微服务这种烂技术,这种共享方法不是面向对象的,非常落后。

软件行业是一个快速更新的行业。我们看到,初创企业几乎都不用 spring,过去它们选 php ruby,现在 django 等等,这些技术都能给新企业带来成功。新的企业用务实轻便的技术弯道超车,通过市场竞争把旧的技术旧的公司和旧的公司政治打败,这是法则。

初创企业是一个新的希望,选择快速高效的技术栈吧——即使你用 java,也不要跟风,java 本不是 spring 那样的。

posted @ 2024-11-15 11:25  Inshua  阅读(35)  评论(0编辑  收藏  举报