spring、AOP、IOC

對spring的理解是什麼?

spring:

    1、開源框架;

    2、IOC(控制反轉),將類的創建和依賴關係寫在配置文件裏,由配置文件注入,實現了鬆耦合;

    3、AOP將安全、事務等於程序邏輯相對獨立的功能抽取出來,利用spring的配置文件將這些功能插進去,實現了按照方面編程,提高了複用性。


spring是一個輕型容器,其核心是bean工廠,用以構造我們所需要的Model。在此基礎之上,spring提供了aop的實現,用他來提供非管理環境下申明方式的事務、安全等服務;對bean工廠的擴張applicationContext更加方便我們實現j2ee的應用;

DAO/ORM的實現方便我們進行數據庫的開發;


spring 的優點 

1、降低了組件之間的耦合性,實現了軟件各層之間的解耦;

2、可以使用容易提供的衆多服務,如事務管理、消息服務等;

3、容器提供單例模式支持

4、容器提供了AOP計算,利用它很容易實現如權限攔截、運行期監控等功能;

5、容器提供了衆多的輔助類,能加快應用的開發;

6、spring對於主流的應用框架提供了集成支持,如Hibernate、JPA、Struts等;

7、spring屬於低侵入式設計,代碼的污染極地;

8、獨立於各種應用服務器

9、spring的DI機制降低了業務對象替換的複雜性;

10、spring的高度開放性,並不強制應用完全依賴於spring,開發者可以自由選擇spring的部分或全部


AOP,面向切面編程完善spring的依賴注入(DI),面向切面編程在spring中主要表現爲2個方面

1、面向切面編程提供聲明式事務管理;

2、spring支持用戶自定義的切面;

面向切面的編程是丟面向對象編程(oop)的補充,

面向對象編程將程序分解成各個層次的對象,面向切面編程將程序運行過程分解成各個切面。

AOP從程序運行角度考慮程序的結構,提取業務處理過程的切面,oop是靜態的抽象,AOP是動態的抽象,

是對應用執行過程中的步驟進行抽象,從而獲取步驟之間的邏輯劃分


AOP,面向切面編程。AOP適合於那些具有橫切邏輯的應用:如性能監測、訪問控制、事務管理、緩存、對象池管理以及日誌記錄。AOP將這些分散在各個業務邏輯中的代碼通過橫向切割的方式抽取到一個獨立的模塊中。AOP實現的關鍵就在於AOP框架自動創建的AOP代理,AOP代理則可分爲靜態代理和動態代理兩大類,其中靜態代理是指使用AOP快你趕緊提供的命令進行編譯,從而在編譯階段就可生成AOP代理類,因此也稱爲編譯時增強;而動態代理則在運行時藉助於JDK動態代理、CGLIB等在內存中“臨時“生成AOP動態代理類,因此也被稱爲運行時增強。


spring AOP是通過動態代理來實現業務邏輯的插入,是開發者在開發時不用關注其他與業務無關的點,通過代理的方式做到了插拔式操作。

IOC其實是遵循了軟件設計理念的依賴倒轉原則,面向對象的設計就是爲了實現軟件的更好的複用性和擴展性,我們就必須降低我們每個pojo的依賴關係,也就是解耦,耦合度低了,我們才能更好的重用和擴展。


AOP,面向切面編程,目標就是分離關注點。就是要做的事,就是關注點。靈活組合,達到一種可配置的可插拔的程序結構。

AOP最大的用戶就在於提供了事務管理的能力。事務管理就是一個關注點,你的正事就是去訪問數據庫,而你不想管事務,所以spring在你訪問數據庫之前,自動幫你開啓事務,當你訪問數據庫結束之後,自動幫你提交/回滾事務。

AOP要做的就是在用戶不知道的情況下,將我們的調用點包裹起來,把原來的功能進行分離。


IOC,依賴倒置、控制反轉的意思。將對象的創建和獲取提取到外部,由外部容器提供需要的組件。

IOC要做的就是在調用點上從原來的主動生成一個調用點,變成被動的接受一個調用點。


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