本文转载自:我做程序员这十年(三)—— spring、Struts、Hibernate
由此我开始了程序员生涯的第一天,当我自信满满的准备大展身手时。突然发现,教科书上的那一套在工作中根本不适用。
让我印象最深刻的就是工作中使用了一整套的Web框架,而我只会写Servlet。当时几乎颠覆了我的想象,原来平时写的那么多Servlet尽然可以在xml文件中配置一个映射关系就行,而且作为请求的入口控制器完全不需要像Servlet那样实现doGet 和 doPost 这两个方法。认识中每个请求对应一个Servlet在这些框架中完全不是一个东西。当时的前端控制器是通过Struts来做的,所以只需要关注具体的业务入口方法就行。这极大的提高了开发的效率和代码的可读性。
作为Web开发中的三大件,第二大件就是Spring,这个东西太厉害了,直到现在几乎所有的项目中都还在用,而且Spring的生态发展的也是越来越完整,越来越好。Spring给我印象最深的两点就是 AOP 和 IOC,所谓AOP都知道就是“面向切面”只从字面上来理解都觉得很简单,但是要在使用过程中真正使用切面这个技术,对于刚参加工作的我来说,在当时无疑是要攻克的一个大难题。然后是IOC,“依赖注入”或者叫“控制反转”,我个人更偏向于“依赖注入”这个解释,但当时大多数人都偏向于“控制反转”这个词,我就纳闷了,怎么样的控制反转,是谁控制谁?又是谁反转了?而“依赖注入”理解起来就太容易了,按照字面意思就是一个对象中,需要用到另一个对象,即在 A 对象中需要用到 B对象的某些功能,就是A依赖于B,在Spring中的做法就是B作为A的一个私有变量。
三大件的最后一个就是Hibernate了,其实在这三大件中,Hibernate是我最不喜欢的,也是我认为最没用的一个。但是在当时几乎所有的人都称赞Hibernate 的OOM思想。虽然我也挺佩服Hibernate的设计思想,但是我还是更喜欢写直观的SQL,因为我觉得自己写SQL就有一种一切尽在自己的掌控中的感觉。我相信在当时肯定不止我一个人被Hibernate的一级缓存,二级缓存绕的晕头转向。直到后来,我被调到了报表组去做报表,我对Hibernate的好感几乎全部失去了,我的直觉告诉我,Hibernate定将成为历史而被开发人员抛弃。这么多年过去了,我不知道现在还有多少人在用Hibernate?如果你还在用,那你一定是个念旧的人。
在Struts、SPring、Hibernate在当时简称为SSH框架,市面上几乎所有的公司都在用SSH这套框架,所以当我打算跳槽的时候,SSH就是必备技能。甚至在当时出现这样一种情况:只要你熟悉SSH框架,所有的公司随你挑。
为了更高的工资,我当然不会放过SSH框架的学习,于是我开始每天晚上研究SSH的思想、核心功能、用法以及注意点。后来开始慢慢的尝试阅读SSH的源码。当然之后骄傲的我自然是跳槽了,而就在那一年,一年之内,我跳槽了七家公司。工资也是翻了一倍又翻一倍。
说道SSH这三个开源框架,我不得不称赞Spring的优秀,Spring功能模块化清晰,即插即用的模块化设计,使用简单,而极大的提高开发效率。以至于在后来的发展中,Spring几乎一统江湖。而Struts和Hibernate则从历史的大舞台惨淡的落幕了。作为典型的反面教材,Hibernate的设计思想无疑是优秀的,恰恰也正是因为它的设计思想,使其设计过于臃肿,在单服务的年代,数据结构没有现在这么复杂,数据量也没有现在这么庞大的时候,是有其必然的历史使命。但随着信息的爆炸,业务结构也越来越复杂,Hibernate显然就不能适应当前的生产需要了。
很长一段时期,做Java开发,就是做SSH开发。
本文讲述了作者程序员生涯中接触的SSH框架。Struts作为前端控制器提高开发效率;Spring功能强大,AOP和IOC影响深远;Hibernate虽有优秀设计思想,但过于臃肿。SSH框架曾是Java开发必备,后Spring发展良好,Struts和Hibernate逐渐落幕。

1167

被折叠的 条评论
为什么被折叠?



