最近看到看很多人都在吹捧SpirngMVC3如何提高开发效率,如何高效,由于本人一直在用Struts2,所以就忍不住好奇了一把,由于长期使用Struts2,现在总算顺手了,同时也被Struts2折磨得差不多了,熟悉Struts2相对于纯生Servlet,Struts1的优点,也深感他的缺点,不过对于springmvc的吹捧,很多优点确不以为然.
Struts2的一个硬伤就是对Rest支持的极度弱小,社区也有绑定的rest插件,不过这玩意我感觉纯粹是为了跟风打酱油的,看起来很美,如果你实际上投入使用,你就会发现这是个非常坑爹的玩意,简直让人哭笑不得,算了,放弃,有兴趣的同学可以去试试,但是Struts2社区里最优秀的插件要算Convertion插件了,根据一直吹的〇配置风潮,我估计这插件也是由此而生的,这个插件除了拦截器仍然需要在xml里配置之外,使用他,大家可以基本告别对于action的xml配置了,嗯,这是个问题,等等,xml的坏处是需要去手写url等,作为程序员,这种重复繁杂的工作实在很不拉风啊,改用annotation后的确很方便了,但是,但是。。。。。嗯嗯,幸好有但是,某些大神肯能意识到了这个问题,annotation没法全局概览action配置嘛,于是另外一个插件产生了,config-browser,看起来这伙子人的确不是吃素的,这个插件使用也很简单,把jar放lib下,然后config-browser/index就可以很系统的看到各种action配置了,不管你是用xml配置的还是注解配置的,
不过struts2实际上诞生很久了,其实他应该是和strut1同时代的产物,不知道现在还有多少人记得哪个叫opensymphony的组织,该组织诞生了很多优秀的软件,osworkflow,webwork,oscach,sitemesh,ongl,站点很专业,可惜,事实证明太专业的公司,例如sun,唉,不说也罢,这个站点现在已经解散了,兔死狐悲,大家不要悲伤。在struts1红火不久就有另外一个叫webwork的框架悄悄在社区生根发芽,并慢慢占据了一席之地,struts1火完了,他还在火,最后终于变身为apache的struts2 。现在还被人争论过,不过webwork+xwork这些天才的才华是很难被人遗忘的。而这个时候,springmvc还尚在孵化之中。
技术发展日新月异,不久ajax突然就火了,于是json也突然火了,于是mvc三层模式也在不断翻新推陈,人们好像厌倦了那种什么都用手写,这时ror突然也火了,在人们被spring+struts,struts2,hibernate,折磨的差不多的时候,突然有一种约定大于配置的轻便思想实践得到了应用,ror在短期内风生水起,并最终导致占据一席之地,究其原因,a restful,b,无须reload,c约定大于配置,实际上不约定光配置的做法在无休的重复了很多重复的工作,这可是程序员们最厌烦的工作了。
他们通常不喜欢把说过的话重说一边,或者相似的意思再次表达,ror直接影响了iteye robin,数月后他勇敢的敢为人先,用ror重写了iteye知道今天。
趋利避害,人之本性也,javatar们也未停止,技术新潮的席卷,json-struts2插件,rest-插件,struts2应对技术变革的办法只有一个,就是-----------插件,于是你去struts2社区插件栏看看,应有尽有,当然好不好用另当别论,但总是对付住了大家的需求,期间其他模型的web开发模式始终没有大火,不愠不火可以说是一大特征,这些可用在jsf,taperstry等等事件模式的框架。
纵观历史,spring似乎总是一个优秀的改良者,其实到现在我还老在论坛上,QQ里看见有人再问,到底spring是干什么的,的确,spring所用的技术没有多少是创新的,但是,他却能把这些技术以便捷的工具方式带给大家,如果你看过企业设计模式这本书,javaee设计模式这本书,你用spring就会发现一些恍恍惚惚的相似,如同隔靴搔痒,说不是又相像,说一样又不同,总之,spring组织是一个伟大的实践者,就像有人对spring作者的评价一样,他就是一个伟大的布道者。。。把技术的福音传给大家。。。。。扯远了。。。。,有天才,也得有伯乐,他们的责任就是把天才的好处让广大普通人感受,从这点来看,spring也功不可没。
07年开始springmvc悄悄的长大了,一开始一直在默默的发展,但现在,它已经晚产了前期的技术积累和必经之路,走到了成熟,光彩众人可见,但你在羡慕他光芒的同时有没有留意他成长的轨迹,struts2是天才型的项目,其基础是哪些牛人一开始就奠定好的,到现在也未曾改变,而spring系列一直就是默默的发展起来的,外围插件不算在内,于是有人说spring越来越臃肿了,的确,帝国嘛,官僚嘛