AOP與IOC的概念


  • IOC(Inversion Of Control,控制反轉)
IOC它不是 技術,而是一種設計思想,是spring的核心。
控制:IOC意味着將你設計好的對象交給容器控制,而不是傳統的在你的對象內部直接控制,spring容器控制了對象,主要是控制了外部資源的獲取。類的創建、銷毀都由 spring容器來控制
反轉:在傳統編程中,我們手動創建對象,而在IOC中是容器幫我們創建並注入對象,容器幫我們查找和注入對象,對象是被動注入的,叫反轉
IoC對編程帶來的最大改變不是從代碼上,而是從思想上,發生了“主從換位”的變化。應用程序原本是老大,要獲取什么資源都是主動出擊,但是在IoC/DI思想中,應用程序就變成被動的了,被動的等待IoC容器來創建並注入它所需要的對象。
 
  • DI(Dependency Injection,依賴注入)
IoC和DI是同一個概念的不同角度描述,控制反轉概念比較含糊,而依賴注入較明確;
依賴:應用程序依賴於spring容器
注入:spring容器為應用程序注入某個對象,spring容器通過反射來實現注入
 
  • AOP(Aspect Oriented Programming,面向切面編程)
AOP是Spring提供的關鍵特性,Spring的AOP為動態AOP, AOP就是在某一個類或方法執行前后打個標記,聲明在執行到這里之前要先執行一段特定代碼,執行完這里之后要接着執行另一段特定代碼,所以AOP把一些公共特定代碼塊封裝成切面(切面=代碼塊=橫向關注點),切面與業務邏輯無關,要執行的這些特定代碼是插拔式的。
為什么用AOP:方便你偷懶,把一些事情交給程序做;讓代碼邏輯更清晰,讓業務邏輯關注業務本身而不是其他亂七八糟的東西(如安全,事物,日志)
連接點:你想在執行某個方法的前后執行一段特定代碼,這個方法的前后就是連接點(spring只支持方法連接點)
切入點:假若你有很多方法的前后都需要執行特定代碼,即你有很多個連接點,但現在你變卦了,只想在指定的一個方法前后執行特定代碼,就可用切入點指定這個方法,讓切入點來篩選連接點,選中你想要的方法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM