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.而实际开发中 ...
随机推荐
- 【赵渝强老师】什么是Spark SQL?
一.Spark SQL简介 Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作用. 为什么要学习Spark SQL? ...
- Win10 LTSC 从 2019(1809) 升级到 2021(21H2) 后找回丢失的 WSL
Win 10 LTST 2019 升级 2021 很简单,直接挂载 ISO 镜像以后,运行 setup.exe,剩下的就是耐心等待了. 升级完成后,用户信息和安装的软件基本上都在,VM15 启动的时候 ...
- 墨天轮沙龙 | 清华乔嘉林:Apache IoTDB,源于清华,建设开源生态之路
在6月8日举办的[墨天轮数据库沙龙第七期-开源生态专场]中,清华大学博士,助理研究员,Apache IoTDB PMC 乔嘉林老师分享了<Apache IoTDB,源于清华,建设开源生态之路&g ...
- 基于 Nginx 的大型互联网集群架构与实战方案
1. Nginx 负载均衡基础配置 首先,搭建一个基础的 Nginx 负载均衡器,用于将流量分发到多个后端服务器上. 步骤 1.1:安装 Nginx 在每台要作为负载均衡器的服务器上,安装 Nginx ...
- SaaS架构:中央库存系统架构设计
大家好,我是汤师爷~ 近年来,越来越多的零售企业大力发展全渠道业务.在销售额增长上,通过线上的小程序.直播.平台渠道等方式,拓展流量变现渠道.在会员增长方面,通过多样的互动方式,全渠道触达消费者,扩大 ...
- 1553B总线测试仪
1553B总线测试仪-天津光达航电科技有限公司在测试模拟1553B总线的标准化测试仪器,该仪器是通过简单直观的管理工具实现复杂的MIL-STD-1553的测试及模拟功能,主要包括对MIL-STD-15 ...
- vue3实现多层级的动态表单增减
.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...
- 某制造企业基于 KubeSphere 的云原生实践
背景介绍 随着业务升级改造与软件产品专案的增多,常规的物理机和虚拟机方式逐渐暴露出一些问题: 大量服务部署在虚拟机上,资源预估和硬件浪费较大: 大量服务部署在虚拟机上,部署时间和难度较大,自动化程度较 ...
- 使用VMware Workstation创建的虚拟机无法连接网络解决方法
引言:最近打开虚拟机老是连接不上网络,在网上找这前两个方法试还是一直不行,最后才知道忘记重启DHCP service和NAT service 1.查看虚拟机的设置,确保虚拟机网络连接的方式勾选的是NA ...
- Python字典推导式
要求打印字典中值小于1的key和value d = {"a": 1, "b":2, "c":3} d = {key: value for k ...