老规矩
优点:模块化,更新快,开源,扩展性强,生态圈丰富
缺点:排外,太过灵活,继承性低,培训成本高
三大关键
Spring是什么:2014年之前我会说Spring是一个容器框架。现在Spring已经变成一个生态圈,它已经变成一个大家庭了。我也正在寻找Spring的新定义。
Spring能干什么:虽然现在Spring开发多了很多组件,但是我还是说。Spring是做web开发的中间件。
Spring怎么用:这个就不写这里了,后面开新的博客去整理。
历程:
2012年就在说ssh三大框架。那个时候struts2刚出,Spring 也没说要做mvc,持久化框架更是只有hibernate。ssh三大框架就这样叫出来了,Spring在这中间起什么作用呢?没错,粘合剂,我要用mvc,和对象持久化。那么把Spring加入就是非常好的选择,就因为集成方便。然后那个时候什么控制反转,依赖注入是很有好处。但是,仍然在争吵中度过的2012年,什么都是xml配置,什么都要配置非常多的人抵触,而且那个时候Spring是没办法热插拔的。所以Spring在那个时候根本没啥地位。
然后什么时候发生变化了呢,Spring mvc在2012年底突然异军突起,遍地开花,结合java的注解开发,直接风靡全球。直接亮瞎我的双眼,然后Spring的AOP实现的日志拦截。已经在稍微晚一点的权限主键。那个时候的Spring感觉突然地位变重要了,Spring3.0就是这个转变的标识。
2013年之后在看Spring,那些争吵的声音都慢慢平息下去了,反而Spring慢慢开始壮大,基本上每年一个样,变我都慢慢的不认识了。加入大数据啊,然后分布式的呀,太多太多。其实在2014年的时候,Spring还并没有到春天,哪个时候Spring3只是在慢慢发芽,我们公司就是用的Spring3。
Spring4貌似是在2014年的8月份出的,具体时间不太记得。然后Spring就慢慢变大了,加了各种控件的支持,但是都没有了解过了。
现在Spring已经不再是当年的粘合剂,他的作用已经无法替代。现在说Java web开发基本上都是Spring,可以没有Struts可以没有hibernate。基本上没有不用Spring的。
在移动开发上也是很多使用Spring的。但是有个面试官问我,如果不用Spring怎么开发。我觉得这个问题值得认真思考。
优缺点解释:
其实本来不太像解释,本来我是个Spring粉,优点说这么少已经很难为我了。说Spring好的网上一抓一大把,我就不说了。
缺点其实很明显,我就解释一下缺点。
排外:Spring说是生态圈,但是呢,我从没见过Spring的什么插件。相对说JQuery就好很多,很多插件可以用。Spring可以有很多插件,但是一般来说都是官方的,官方对于这一点做的并不是很好。只是在打造自己的生态圈,说起来就是做自己的帝国而已。你说Spring本来就是开源的,直接去官方提供插件就好?呵呵!
太过灵活:最开始SSH流行,我们技术总监分析了很多,其中有一点,就是框架对代码的规范性。大伙写出来的代码其实都差不多,相当于已经约定了怎么去做web开发。
而Spring在后面的版本中,对代码的规范性做的并不是很好,因为太灵活,所以你可以看到各种各样的代码。这样对于小公司而且又会多很多成本。
继承性低:谁能告诉我怎么把Spring2升级到Spring3呢?直接升级?抱歉Spring3需要的hibernate版本要更高哦!更不用说Spring3升级到Spring4了。这个其实也是没办法避免的。其实我试过了,如果只是用Spring,那么它是完全向下兼容的,我从Spring2.5.6直接一路升级到了Spring4.3.1,中间非常顺。如果你使用了Spring集成其他的框架,那么抱歉,你要改的东西还真不少。所以,这里的继承性低不是Spring引起的,其实和Spring关系并不大,更多的是一些集成性问题。
培训成本高:如果说我上面都是强词夺理的话,这个理由估计要被无数人喷。我是真想说,真的培训成本很高,因为它越来越大了。如果只是用Spring Framework那还好,如果使用了其他的,几乎培训成本刷刷往上涨。他的生态圈更新起来太快,你能完全保证使用一个版本就不更新了吗?每次升级架构师都需要花费很多时间去读他的更新日志,还需要很多测试。
以上只是我个人理解,我不是大神,能力有限,不喜随便喷。