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.而实际开发中 ...
随机推荐
- 如何更改Wordpress语言为中文
在使用WordPress的时候,一般安装默认语言是英文,可以在后台设置里面直接修改站点语言为简体中文,当后台没有语言选项框的这一栏,如下图所示,该怎么办呢? 这个时候我们可以找到文件wp-config ...
- window配置onnxruntime,运行c++版本
为了使用ONNX-Runtime-Inference这个项目,但是我缺少onnxruntime这个库, 网上找了很多教程,但是大多数都是关于linux的,这里简单记录一下我的配置流程 找到onnxru ...
- 封装一个Promise.all 的函数
// 1. 准备三个异步函数 const promise1 = Promise.resolve('prom11ise1'); const promise2 = new Promise(function ...
- md转换成_post下直接使用的文件
md转换成_post下直接使用的文件 package org.example; import java.io.File; import java.io.IOException; import java ...
- 微软nuget国内源
https://www.cnblogs.com/Leo_wl/p/16328650.html 为解决国内访问NuGet服务器速度不稳定的问题 ,这里推荐使用NuGet微软官方中国国内镜像 地址:htt ...
- python面向对象复习
1.类的语法 # 类的语法 # 定义类 class Dog(object): # 类的属性或者类变量,一般是公共属性,存在类的内存空间,所有实例对象共享 d_type = "京巴" ...
- 使用wxpython开发跨平台桌面应用,对常用消息对话框的封装处理
在很多程序中,封装常用消息对话框有很多好处,尤其是在 GUI 应用程序中,本篇随笔结合.net 开发Winform界面的经验,对使用wxpython开发中 wx.MessageDialog 和 wx. ...
- web上线部署系统 Walle
Walle瓦力是基于git和rsync实现的一个web部署系统工具. 用户分身份注册.登录 开发者发起上线任务申请 管理者审核上线任务 支持多项目部署 快速回滚 部署前准备任务(前置检查) 代码检出后 ...
- 实战:Mailivery 模拟登录
问题情景 混淆群内的小伙伴遇到这么个问题,Mailivery 这个网站登录后,明明提交的表单(邮箱和密码也正确).请求头等等都没问题,为啥一直重定向到登录页面呢?唉,该出手时就出手啊,我也看看咋回事吧 ...
- 用于自然语言处理的循环神经网络RNN
前一篇:<人工智能模型学习到的知识是怎样的一种存在?> 序言:在人工智能领域,卷积神经网络(CNN)备受瞩目,但神经网络的种类远不止于此.实际上,不同类型的神经网络各有其独特的应用场景.在 ...