Spring的入門教程(1)

(1)Spring入門
Spring 是於 2003 年興起的一個輕量級的 Java 開發框架,它是爲了解決企業應用開發的複雜性而創建的。Spring的核心是控制反轉(IoC)和麪向切面編程(AOP)。
簡單來說,Spring是一個分層的 Java SE/EE full-stack(一站式)輕量級開源框架。

Spring 的主要作用就是爲代碼“解耦”,降低代碼間的耦合度。
根據功能的不同,可以將一個系統中的代碼分爲主業務邏輯與系統級業務邏輯兩類。它們各自具有鮮明的特點:
主業務代碼間邏輯聯繫緊密,有具體的專業業務應用場景,複用性相對較低;
系統級業務相對功能獨立,沒有具體的專業業務應用場景,主要是爲主業務提供系統級服務,如日誌、安全、事務等,複用性強。

Spring 根據代碼的功能特點,將降低耦合度的方式分爲了兩類:IoC 與 AOP。
IoC 使得主業務在相互調用過程中,不用再自己維護關係了,即不用再自己創建要使用的對象了。而是由 Spring 容器統一管理,自動“注入”。
AOP 使得系統級服務得到了最大複用,且不用再由程序員手工將系統級服務“混雜”到主業務邏輯中了,而是由 Spring 容器統一完成“織入”

(2)Spring的主要特點

1.非侵入式

所謂非侵入式是指,Spring框架的API不會在業務邏輯上出現,即業務邏輯是POJO。由於業務邏輯中沒有Spring的API,所以業務邏輯可以從Spring框架快速的移植到其他框架,即與環境無關。

2. 容器

Spring作爲一個容器,可以管理對象的生命週期、對象與對象之間的依賴關係。可以通過配置文件,來定義對象,以及設置與其他對象的依賴關係。

3. IoC

控制反轉(Inversion of Control),即創建被調用者的實例不是由調用者完成,而是由Spring容器完成,並注入調用者。

當應用了IoC,一個對象依賴的其它對象會通過被動的方式傳遞進來,而不是這個對象自己創建或者查找依賴對象。即,不是對象從容器中查找依賴,而是容器在對象初始化時不等對象請求就主動將依賴傳遞給它。

4. AOP

面向切面編程(AOP,Aspect Orient Programming),是一種編程思想,是面向對象編程OOP的補充。很多框架都實現了對AOP編程思想的實現。Spring也提供了面向切面編程的豐富支持,允許通過分離應用的業務邏輯與系統級服務(例如日誌和事務管理)進行開發。應用對象只實現它們應該做的——完成業務邏輯——僅此而已。它們並不負責其它的系統級關注點,例如日誌或事務支持。

我們可以把日誌、安全、事務管理等服務理解成一個“切面”,那麼以前這些服務一直是直接寫在業務邏輯的代碼當中的,這有兩點不好:首先業務邏輯不純淨;其次這些服務被很多業務邏輯反覆使用,完全可以剝離出來做到複用。那麼AOP就是這些問題的解決方案,可以把這些服務剝離出來形成一個“切面”,以期複用,然後將“切面”動態的“織入”到業務邏輯中,讓業務邏輯能夠享受到此“切面”的服務。

(3)Spring 的核心概念

1.Ioc概念:

控制反轉(IoC,Inversion of Control),
是一個概念,是一種思想。指將傳統上由程序代碼直接操控的對象調用權交給容器,通過容器來實現對象的裝配和管理。控制反轉就是對對象控制權的轉移,從程序代碼本身反轉到了外部容器。

IoC 是一個概念,是一種思想,其實現方式多種多樣。當前比較流行的實現方式是依賴注入。

2.依賴注入:DependencyInjection,DI,程序代碼不做定位查詢,這些工作由容器自行完成。
依賴注入 DI 是指程序運行過程中,若需要調用另一個對象協助時,無須在代碼中創建被調用者,而是依賴於外部容器,由外部容器創建後傳遞給程序。

Spring 的依賴注入對調用者與被調用者幾乎沒有任何要求,完全支持 POJO 之間依賴關係的管理。依賴注入是目前最優秀的解耦方式。依賴注入讓 Spring 的 Bean 之間以配置文件的方式組織在一起,而不是以硬編碼的方式耦合在一起的


3.POJO: POJOPlain Ordinary Java Object的縮寫。表示普通的Java對象。使用POJO名稱是爲了避免和EJB混淆起來。這樣的類有屬性和get,set方法。不具有任何特殊角色和不繼承或不實現任何其它Java框架的類或接口。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章