Spring是Java歷史中很重要的組成部分。
建立Spring的主要目的是用來替代更加重量級的企業級Java 技術,尤其是 EJB。相對於 EJB 來說,Spring 提供了更加輕量級和簡單的程式設計模型。它增強了簡單老式Java 物件(Plain Old Java object,POJO)的功能,使其具備了之前只有EJB和其他企業級Java規範才具有的功能。
隨著時間的推移,EJB以及Java2企業版(Java2Enterprise Edition,J2EE)在不斷演化。EJB自身也提供了面向簡單POJO的程式設計模型。現在,EJB也採用了依賴注入(Dependency Injection,DI)和麵向切面程式設計(Aspect-Oriented Programming,AOP)的理念,這毫無疑問是受到Spring成功的啟發。
儘管J2EE(現在稱之為JEE)能夠趕上 Spring的步伐,但Spring也沒有停止前進。Spring繼續在其他領域發展,而JEE則剛剛開始涉及這些領域,或者還完全沒有開始在這些領域的創新。移動開發、社交API整合、NoSQL資料庫、雲端計算以及大資料都是Spring正在涉足和創新的領域。Spring的前景依然會很美好。
我們將會在較為宏觀的層面上介紹Spring,讓你對Spring是什麼有直觀的體驗。讓你對Spring所解決的各類問題有一個清晰的認識,為進一步學習奠定基礎。
1.1 簡化java開發
Spring是一個開源框架,是為了解決企業級應用開發的複雜性而建立的,使用Spring可以讓簡單的JavaBean實現之前只有EJB才能完成的事情。但Spring 不僅僅侷限於伺服器端開發,任何Java應用都能在簡單性、可測試性和松耦合等方面從Spring中獲益。
bean 的各種名稱……雖然Spring用bean 或者 JavaBean 來表示應用元件,但並不意味著 Spring 元件必須要遵循JavaBean規範。一個Spring 元件可以是任何形式的 POJO。這裡採用JavaBean的廣泛定義,即POJO的同義詞。
歸根結底,支撐Spring 的僅僅是少許的基本理念,所有的理念都可以追溯到Spring 最根本的使命上:簡化 Java
開發。許多框架都聲稱在某些方面做了簡化,但Spring的目標是致力於全方位的簡化Java開發。這勢必引出更多的解釋,Spring是如何簡化 Java開發的?
為了降低 Java 開發的複雜性,Spring 採取了以下4種關鍵策略:
- 基於POJO的輕量級和最小侵入性程式設計;
- 透過依賴注入和麵向介面實現松耦合;
- 基於切面和慣例進行宣告式程式設計;
- 透過切面和模板減少樣板式程式碼。
幾乎 Spring 所做的任何事情都可以追溯到上述的一條或多條策略。接下來,我將透過具體的案例進一步闡述這些理念,以此來證明Spring是如何簡化Java開發。讓我們先從基於POJO的最小侵入性程式設計開始。