Spring
pring是一個輕量級的DI和AOP容器框架。
說它輕量級有一大部分原因是相對與EJB的(雖然本人從沒有接觸過EJB的應用),重要的是,Spring是非侵入式的,基於spring開發的應用一般不依賴於spring的類。
容器:Spring是個容器,因為它包含並且管理應用對象的生命周期和配置。如對象的創建、銷毀、回調等。
框架:Spring作為一個框架,提供了一些基礎功能,(如事務管理,持久層集成等),使開發人員更專注於開發應用邏輯。
Spring的優點
1.降低了組件之間的耦合性 ,實現了軟件各層之間的解耦
2.可以使用容易提供的眾多服務,如事務管理,消息服務等
3.容器提供單例模式支持
4.容器提供了AOP技術,利用它很容易實現如權限攔截,運行期監控等功能
5.容器提供了眾多的輔助類,能加快應用的開發
6.spring對於主流的應用框架提供了集成支持,如hibernate,JPA,Struts等
7.spring屬於低侵入式設計,代碼的污染極低
8.獨立於各種應用服務器
9.spring的DI機制降低了業務對象替換的復雜性
10.Spring的高度開放性,並不強制應用完全依賴於Spring,開發者可以自由選擇spring的部分或全部
什么是IOC/DI機制
依賴注入(Dependecy Injection)和控制反轉(Inversion of Control)是同一個概念,具體的講:當某個角色需要另外一個角色協助的時候,在傳統的程序設計過程中,通常由調用者來創建被調用者的實例。但在spring中創建被調用者的工作不再由調用者來完成,因此稱為控制反轉。創建被調用者的工作由spring容器來完成,在容器實例化對象的時候主動的將被調用者(或者說它的依賴對象)注入給調用對象,因此又叫依賴注入。
IOC和DI優點
spring以動態靈活的方式來管理對象 , 注入的兩種方式,設置注入和構造注入。
設置注入的優點:直觀,自然
構造注入的優點:可以在構造器中決定依賴關系的順序。
什么是AOP
Spring對面向切面編程提供了強有力的支持,通過它讓我們將業務邏輯從應用服務(如事務管理)中分離出來,實現了高內聚開發,應用對象只關注業務邏輯,不再負責其它系統問題(如日志、事務等)。Spring支持用戶自定義切面。
面向切面編程(AOP)完善spring的依賴注入(DI),面向切面編程在spring中主要表現為兩個方面
1.面向切面編程提供聲明式事務管理
2.spring支持用戶自定義的切面
面向切面編程(aop)是對面向對象編程(oop)的補充,面向對象編程將程序分解成各個層次的對象,面向切面編程將程序運行過程分解成各個切面。AOP從程序運行角度考慮程序的結構,提取業務處理過程的切面,oop是靜態的抽象,aop是動態的抽象,是對應用執行過程中的步驟進行抽象,,從而獲得步驟之間的邏輯划分。
aop框架優點:
1.各個步驟之間的良好隔離性
2.源代碼無關性
