本文轉載自:我作程序員這十年(三)—— spring、Struts、Hibernate前端
我作程序員的這十年(一)程序員
我作程序員這十年(二)spring
由此我開始了程序員生涯的第一天,當我自信滿滿的準備大展身手時。忽然發現,教科書上的那一套在工做中根本不適用。緩存
讓我印象最深入的就是工做中使用了一整套的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顯然就不能適應當前的生產須要了。xml
很長一段時期,作Java開發,就是作SSH開發。