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 那样的。
Spring 话题的更多相关文章
- Spring高级话题-@Enable***注解的工作原理
出自:http://blog.csdn.net/qq_26525215 @EnableAspectJAutoProxy @EnableAspectJAutoProxy注解 激活Aspect自动代理 & ...
- Spring Boot实战笔记(九)-- Spring高级话题(组合注解与元注解)
一.组合注解与元注解 从Spring 2开始,为了响应JDK 1.5推出的注解功能,Spring开始大量加入注解来替代xml配置.Spring的注解主要用来配置注入Bean,切面相关配置(@Trans ...
- Spring Boot实战笔记(七)-- Spring高级话题(计划任务)
一.计划任务 从Spring3.1开始,计划任务在Spring中的实现变得异常的简单.首先通过在配置类注解@EnableScheduling来开启对计划任务的支持,然后在执行计划任务的方法上注解@Sc ...
- Spring Boot实战笔记(五)-- Spring高级话题(Spring Aware)
一.Spring Aware Spring 依赖注入的最大亮点就是你所有的 Bean 对 Spring容器的存在是没有意识的.即你可以将你的容器替换成其他的容器,如Google Guice,这时 Be ...
- springboot学习章节代码-spring高级话题
1.Spring Aware(获取Spring容器的服务) hi, i am guodaxia! test.txt package com.zhen.highlights_spring4.ch3.aw ...
- Spring高级话题
Spring Aware 在实际项目中,你不可避免的要用到spring容器本身的功能资源,这时你的bean要意识到spring容器的存在,才能调用spring提供的资源.spring aware本来就 ...
- Spring Boot实战(3) Spring高级话题
1. Spring Aware Spring的依赖注入的最大亮点就是你所有的Bean对Spring容器的存在是没有意识的.即你可以将你的容器替换成别的容器. 实际项目中,不可避免地会用到Spring容 ...
- Spring Cloud实战 | 第十篇 :Spring Cloud + Seata 1.4.1 + Nacos1.4.0 整合实现微服务架构中逃不掉的话题分布式事务
Seata分布式事务在线体验地址:https://www.youlai.store 本篇完整源码地址:https://github.com/hxrui/youlai-mall 有想加入开源项目开发的童 ...
- Spring Boot实战笔记(八)-- Spring高级话题(条件注解@Conditional)
一.条件注解@Conditional 在之前的学习中,通过活动的profile,我们可以获得不同的Bean.Spring4提供了一个更通用的基于条件的Bean的创建,即使用@Conditional注解 ...
- Spring Boot实战笔记(六)-- Spring高级话题(多线程)
一.多线程 Springt通过任务执行器(TaskExecutor)来实现多线程和并发编程.使用ThreadPoolTaskExecutor可实现一个基于线程池的TaskExecutor.而实际开发中 ...
随机推荐
- Linux 循环设备 loop疑惑
什么是loop设备? loop设备是一种伪设备,是使用文件来模拟块设备的一种技术,文件模拟成块设备后, 就像一个磁盘或光盘一样使用.在使用之前,一个 loop 设备必须要和一个文件进行连接.这种结合方 ...
- 墨天轮国产数据库沙龙 | 胡彦军:华为GaussDB迁移工具解密
在共同推进国产化生态发展的进程下,墨天轮正式推出"墨天轮国产数据库沙龙"系列直播活动,将定期邀请各国产数据库产品专家.掌门人,共同探讨如何达成技术"自主可控"的 ...
- url 统一资源定位符的组成
协议 protocol :http 或者 https = http + ssl 或者 file 文件(本地): 域名 host 或 ip 地址: 端口 port 省略默认 80 : 路径 path ...
- 如何解决使用 router.push 跳转路由第二次之后页面就不会刷新了
router.push({ name:"monitor", query:{ deviceid:"1676156672197922816", // 设备 ID i ...
- 13 Multi-Head Self-Attention(从空间角度解释为什么做多头)
博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https:// ...
- 开源之夏 2023|欢迎报名 Apache RocketMQ 社区项目!
开源之夏是由中科院软件所"开源软件供应链点亮计划"发起并长期支持的一项暑期开源活动,旨在鼓励在校学生积极参与开源软件的开发维护,培养和发掘更多优秀的开发者,促进优秀开源软件社区的蓬 ...
- 初识GO语言--基础命令
- KTL (0.9.2,通达信mdt文件)
K,K线,Candle蜡烛图. T,技术分析,工具平台 L,公式Language语言使用c++14,Lite小巧简易. 项目仓库:https://github.com/bbqz007/KTL 国内仓库 ...
- DDCA —— 缓存一致性
1. 多处理器内存组织结构 1.1 SMP/集中式共享内存 集中式共享内存多处理器(Centralized shared-memory multiprocessor)或对称共享内存多处理器(Symme ...
- 你的WAF是否真的安全?雷池社区版的安全能力测试
你的WAF能力如何?雷池社区版的安全能力测试 最近雷池社区版很火,各大技术群都在讨论 什么是雷池? 引用官网文档的一段话: SafeLine,中文名 "雷池",是一款简单好用, 效 ...