javascript
Spring 的前世今生
相信經歷過不使用框架開發Web 項目的70 后、80 后都會有如此感觸,如今的程序員開發項目太輕松了,基本只需要關心業務如何實現,通用技術問題只需要集成框架便可。早在2007 年,一個基于Java語言的開源框架正式發布,取了一個非常有活力且美好的名字,叫做Spring。它是一個開源的輕量級Java SE(Java 標準版本)/Java EE(Java 企業版本)開發應用框架,其目的是用于簡化企業級應用程序開發。應用程序是由一組相互協作的對象組成。而在傳統應用程序開發中,一個完整的應用是由一組相互協作的對象組成。所以開發一個應用除了要開發業務邏輯之外,最多的是關注如何使這些對象協作來完成所需功能,而且要低耦合、高聚合。業務邏輯開發是不可避免的,那如果有個框架出來幫我們來創建對象及管理這些對象之間的依賴關系。可能有人說了,比如“抽象工廠、工廠方法模式”不也可以幫我們創建對象,“生成器模式”幫我們處理對象間的依賴關系,不也能完成這些功能嗎?可是這些又需要我們創建另一些工廠類、生成器類,我們又要而外管理這些類,增加了我們的負擔,如果能有種通過配置方式來創建對象,管理對象之間依賴關系,我們不需要通過工廠和生成器來創建及管理對象之間的依賴關系,這樣我們是不是減少了許多工作,加速了開發,能節省出很多時間來干其他事。Spring框架剛出來時主要就是來完成這個功能。
Spring 框架除了幫我們管理對象及其依賴關系,還提供像通用日志記錄、性能統計、安全控制、異常處理等面向切面的能力,還能幫我管理最頭疼的數據庫事務,本身提供了一套簡單的JDBC 訪問實現,提供與第三方數據訪問框架集成(如Hibernate、JPA),與各種Java EE 技術整合(如Java Mail、任務調度等等),提供一套自己的Web 層框架Spring MVC、而且還能非常簡單的與第三方Web 框架集成。從這里我們可以認為Spring 是一個超級粘合大平臺,除了自己提供功能外,還提供粘合其他技術和框架的能力,從而使我們可以更自由的選擇到底使用什么技術進行開發。而且不管是JAVA SE(C/S 架構)應用程序還是JAVA EE(B/S 架構)應用程序都可以使用這個平臺進行開發。如今的Spring 已經不再是一個框架,早已成為了一種生態。SpringBoot 的便捷式開發實現了零配置,SpringCloud 全家桶,提供了非常方便的解決方案。接下來,讓我們來深入探討Spring 到底能給我們帶來什么?
一切從Bean 開始
說到Bean 這個概念,還得從Java 的起源說起。早在1996 年,Java 還只是一個新興的、初出茅廬的編程語言。人們之所以關注她僅僅是因為,可以使用Java 的Applet 來開發Web 應用,作為瀏覽器組件。但開發者們很快就發現這個新興的語言還能做更多的事情。與之前的所有語言不同,Java 讓模塊化構建復雜的系統成為可能(當時的軟件行業雖然在業務上突飛猛進,但當時開發用的是傳統的面向過程開發思想,軟件的開發效率一直踟躕不前。伴隨著業務復雜性的不斷加深,開發也變得越發困難。其實,當時也是OOP 思想飛速發展的時期,她在80 年代末被提出,成熟于90 年代,現今大多數編程語言都已經是面向對象的)。
同年12 月,Sun 公司發布了當時還名不見經傳但后來人盡皆知的JavaBean 1.00-A 規范。早期的JavaBean 規范針對于Java,她定義了軟件組件模型。這個規范規定了一整套編碼策略,使簡單的Java對象不僅可以被重用,而且還可以輕松地構建更為復雜的應用。盡管JavaBean 最初是為重用應用組件而設計的,但當時他們卻是主要用作構建窗體控件,畢竟在PC 時代那才是主流。但相比于當時正如日中天的Delphi、VB 和C++,它看起來還是太簡易了,以至于無法勝任任何"實際的"工作需要。
復雜的應用通常需要事務、安全、分布式等服務的支持,但JavaBean 并未直接提供。所以到了1998年3 月,Sun 公司發布了EJB 1.0 規范,該規范把Java 組件的設計理念延伸到了服務器端,并提供了許多必須的企業級服務,但他也不再像早期的JavaBean 那么簡單了。實際上,除了名字叫EJB Bean以外,其他的和JavaBean 關系不大了。
盡管現實中有很多系統是基于EJB 構建的,但EJB 從來沒有實現它最初的設想:簡化開發。EJB 的聲明式編程模型的確簡化了很多基礎架構層面的開發,例如事務和安全;但另一方面EJB 在部署描述符和配套代碼實現等方面變得異常復雜。隨著時間的推移,很多開發者對EJB 已經不再抱有幻想,開始尋求更簡潔的方法。
現在Java 組件開發理念重新回歸正軌。新的編程技術AOP 和DI 的不斷出現,他們為JavaBean 提供了之前EJB 才能擁有的強大功能。這些技術為POJO 提供了類似EJB 的聲明式編程模型,而沒有引入任何EJB 的復雜性。當簡單的JavaBean 足以勝任時,人們便不愿編寫笨重的EJB 組件了。
客觀地講,EJB 的發展甚至促進了基于POJO 的編程模型。引入新的理念,最新的EJB 規范相比之前的規范有了前所未有的簡化,但對很多開發者而言,這一切的一切都來得太遲了。到了EJB 3 規范發布時,其他基于POJO 的開發架構已經成為事實的標準了,而Spring 框架也就是在這樣的大環境下出現的。
?
總結
以上是生活随笔為你收集整理的Spring 的前世今生的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于Execution 表达式
- 下一篇: Spring 的设计初衷