ioc(inverse of control)控制反轉是spring容器的核心,aop,宣告式事務等功能都是在此基礎上開花結果的。所謂ioc,就是通過容器來控制業務物件之間的依賴關係,而非傳統實現中,由**直接控制。這也就是「控制反轉」概念所在;控制權由應用**轉到了外部容器,控制權的轉移,就是反轉。控制權轉移帶來的好處就是降低了業務物件之間的依賴程度。
程式語言最終極的目標就是能以更自然、更靈活的方式模擬世界,從原始機器語言到過程語言再到物件導向的語言,程式語言一步步地用更自然、更靈活的方式描述軟體。aop是軟體開發思想發展到一定階段的產物。但aop的出現並不是要完全替代oop,而僅僅作為oop的有益補充。雖然aop作為一項程式設計技術已經有很多年的歷史,但一直長期停留在學術領域,直到spring的出現,aop才作為一項真正的實用技術在應用領域開疆擴土。
關於為什麼要使用aop,下面這個例子可以很好的解釋。
首先,按照軟體重構思想的理念,如果多個類中出現相同的**,應該考慮定義乙個共同的抽象類,將這些相同的**提取到抽象類當中去。比如horse、pig、camel這些物件都有run()、eat()方法,通過引入乙個包含這兩個方法抽象的animal父類,horse、pig、camel就可以通過整合animal復用到run()和eat()方法。通過引入父類消除多個類中的重複**的方式在大多數情況下是可行的,但世界並非永遠這麼簡單,比如下面所示的景區管理業務類。
import com.smart.dao.viewpointdao;
import com.smart.dao.viewspacedao;
import com.smart.domain.viewspace;
/** * 景區管理的服務類
*/public class viewspaceservice
/*** 刪除某個景點
** @param pointid
*/public void deleteviewpoint(int pointid)
}
其中pmonitor是方法效能監視**,它在方法呼叫前啟動,在方法呼叫返回前結束,並在內部記錄效能監視的結果資訊。
其中transmanager的**是事務開始和事務提交的**,我們發現我們的業務**淹沒在重複化非業務性的**之中,效能監視和事務管理這些非業務性**葛藤纏樹搬包圍著業務性**。
此時我們就不能通過抽象父類的方式消除以上的重複性**,因為這些邏輯依附在業務類方法的流程中,它們不能夠轉移到其他地方去。於是產生了aop這種思想。
傻子談Spring的IOC,AOP
尼瑪看了半個月的spring的ioc和aop啊 尼瑪毛線都不懂啊,尼瑪論壇裡發了個貼子一頓問,尼瑪乙個個講的比官方還官方啊,尼瑪還嘲笑俺農村銀啊 尼瑪神馬控制反轉啊,尼瑪神馬依賴注入啊,尼瑪神馬面向切片程式設計啊,神馬尼瑪尼瑪尼瑪啊 尼瑪我就是一it民工,建房子的,你給我龍蝦鮑魚讓我慢慢吃我能吃的爽...
Spring框架的核心思想(IOC AOP)
spring框架的核心思想 面向切面程式設計 aop 反射 註解和動態 引用 github上幫助理解spring框架的 tiny spring 專案 tiny spring 分析 控制反轉 ioc 反射 userdao class com.lagou.dao.impl.userdaoimpl bea...
spring學習筆記 IOC aop,以及隨
控制反 控制權反轉 由硬編碼來建立物件例項 依賴 物件的生命週期交給容器管理,另外依賴關係也交由容器。依賴倒轉原則 0耦合具體耦合 抽象耦合 依賴注入 構造注入 set注入 自動注入 spring ioc 任何class都是bean 1 配置springxml配置檔案,標頭檔案 說明使用了sprin...