Spring是一個輕量級的DI和AOP容器框架。說它輕量級有一大部分原因是相對於EJB的(雖然本人從來沒有接觸過EJB的應用),但重要的是Spring是非侵入式的,基於Spring開發應用一般不依賴於Spring的類。
Spring中的一些概念
DI(Dependency Injection,依賴注入)
依賴注入是控制反轉的具體實現。當一個角色需要另外一個角色協助的時候,在傳統的程序設計中,通常由調用者來創建被調用者的實例,但是在Spring中創建被調用者將不再由調用者完成,而是交給容器去統一創建,這就是控制反轉。創建被調用對象由Spring來完成,在容器實例化對象的時候主動地將被調用者(或者說它的依賴對象)注入給調用對象,這就是依賴注入。
AOP(Aspect Oriented Programming,面向切面編程)
Spring對面向切面編程提供了強有力的支持,通過它讓我們將業務邏輯從應用服務(如事務管理)中分離出來,實現了高內聚開發,應用對象只關注業務邏輯,不再負責其他系統問題,比如日志、事務或權限等。另外Spring還支持用戶自定義切面。
面向切面編程是面向對象編程的一個有力補充。面向對象編程將程序分成各個層次的對象,面向切面的程序將運行過程分解成各個切面。AOP是從運行程序的角度去考慮程序的結構,提取業務處理過程的切面,OOP是靜態的抽象,AOP則是動態的抽象,是對應用執行過程的步驟進行抽象,從而獲得步驟之間的邏輯划分。
容器
Spring是個容器,因為它包含並且管理應用對象的生命周期和配置。比如對象的創建、銷毀和回調等。
框架
Spring作為一個框架,提供了一些基礎功能,比如事務管理或持久層集成等,使開發人員更專注於開發應用邏輯。
Spring的優點
1.使用Spring的IOC容器,將對象之間的依賴關系交給了Spring,降低了組件之間的耦合性,讓我們更專注於應用邏輯。
2.Spring提供眾多服務,比如事務管理,WS等。
3.Spring對AOP很好的支持,方便面向切面編程。
4.Spring對追u的框架提供了很好的集成支持,比如Hibernate、Struts2和JPA等。
5.Spring的DI機制降低了業務對象替換的復雜性。
6.Spring屬於低侵入,代碼的污染極低。
7.Spring的高度可開放性,並不強制依賴於Spring,開發者可以自由選擇Spring的部分或全部。
"不要在悲觀的情緒里沉溺太久,也不要在崩潰的邊緣停留太久。"