重新思考spring,反思为什么让人讨厌

原创
2017/01/23 15:21
阅读数 7.8K

为什么我讨厌spring

1、spring类项目中,总有一类的扫瞄组件什么的(比如:component-scan)标签的功能,如果由容器去做就很方便了。但是现在我们都是在 每个war中都配置,就显得对开发者不太友好了。
2、spring 项目的配置比较复杂。现在流行“约定优于配置”。
3、spring web项目中,spring的运行时架构:
    底层是tomcat一类的容器,在我们的项目war包中,又有一层是bean容器,在这之上是我们的业务代码,这种架构就有些别扭了!
    作为一个开发者我当然希望它更加的简单,应该在servlet容器层,提供bean容器,而不是在我们的代码中!
    那为什么spring 这么多年来一直不改变呢,我的认为是spring的定位问题,它不但要在容器环境中运行,还要在非容器环境都要运行,为了这种统一,就只能牺牲掉一些轻便性。作为一名web开发者,不可忍。
4、spring有很多运行环境,比如tocat, jetty, undertow等,最常用的当然是tomcat。但tomcat近十年以来,都没什么创新进步!一方面是自己固化的定位; 一方面是tomcat的开发者人数太少。看看(https://github.com/apache/tomcat/graphs/contributors)在2017-1-23时,tomcat的代码贡献者也就11个人,核心的贡献者只有一个人。
5、现在的spring项目中, 配置和注释都用,配置也太多,增加了开发的复杂度。
6、现在再重新审视,spring 把代码(bean)写入xml配置中去,是不是用的太泛滥了?代码最直接有效的就是代码!!代码写进xml配置,就能减轻软件的复杂度!哈哈,自欺欺人吧。
7、还有spring 生态圈,老是喜欢些锦上添花的事,集成这个集成那个,太复杂,一点都不轻量级。还有spring 生态圈,老是喜欢些锦上添花的事,集成这个集成那个,太复杂,一点都不轻量级。
可能是想革别人的命容易,革自己的命。spring的 gradle(它们是一个公司)想革maven的命, 但spring 这十多年有多少创新呢? 革自己的命难啊。 不要说spring5 !

8、Spring MVC,做为一个web层框架,在业务逻辑层只能spring。 spring MVC和spring 紧密耦合,没得选择,不爽。
9、上述若干原因,客观上造成了spring很多项目都是“巨石应用”的问题。一个war包20MB是起步,200MB大家也见怪不怪习惯了。 java升不了级,jar包版本升级不敢动,都是spring 巨石应用害的。

      一个大的项目,或一个项目群,最好在纵向按业务功能分成多个模块,横向酌情按Controller, Business logical,Dao等来分层打包。比如一个纵向的业务Controller及之上的打一个war, Business logical及之下的打在一个jar里,以便于在不同模块中做共享,减少冗余代码。 但spring式项目,大家好像都不习惯这么做,还是一个巨石应用搞定!


那为什么用spring做开发还是要多一些呢? 
1、spring确实不算太差(无论是以前或现在),
2、当年ejb2确实难用(以至于很多开发人员对EJB的印象还停留在ejb2)。
3、最重要的一方面是当年spring的市场起来了,开发者建立了固化习惯,即便是spring的发展并无多少创新和进步。 
4、java web行业的成熟,进步的动力不是很足。
5、大家用spring 做开发太多,以至于认为spring 就是j2ee。大家应该有准确的认识,spring是spring, javaEE是javaEE;  spring和javaEE即相关,又有相互区别和竞争。总得来说spring 基于javaEE标准,而又不遵照javaEE标准,而自己建立了一个自己的生态体系。


关于spring boot.

Spring boot是可以嵌入tomcat, jetty, undertow的。
嵌入式Tomcat早就存在,测试表明undertow比tomcat性能更好。
比起wildfly Swarm, akka, vert.x, sparkjava, AOL Microserver, Dropwizard ,KumuluzEE, 我确认spring boot算不上什么创新,只能算是有一些技术跟进罢了。

如果对待spring呢?
你现在可以继续一直用spring啊,但不要盲从,比如使用ejb3.2、jax-rs开发也很好啊。带着审视的态度,跳出自己的小范畴,多一点研究,多一点思考。特别是新的项目,重新考虑,做出更好的选择。
现在微服务,微框架,非基于servlet的javaWeb的出现和发展,大家可以有更多的选择了。

 

展开阅读全文
加载中
点击加入讨论🔥(17) 发布并加入讨论🔥
打赏
17 评论
3 收藏
3
分享
返回顶部
顶部