對於Spring IOC 和 AOP 簡單理解

2022-09-20 16:42:12 字數 815 閱讀 8349

ioc(inversion of controll,控制反轉)是一種設計思想,將原本在程式中手動建立物件的控制權,交由給spring框架來管理。ioc容器是spring用來實現ioc的載體,ioc容器實際上就是乙個map(key, value),map中存放的是各種物件。

這樣可以很大程度上簡化應用的開發,把應用從複雜的依賴關係中解放出來。ioc容器就像是乙個工廠,當需要建立乙個物件,只需要配置好配置檔案/註解即可,不用考慮物件是如何被建立出來的,大大增加了專案的可維護性且降低了開發難度。

aop(aspect-oriented programming,面向切面程式設計)能夠將那些與業務無關,卻為業務模組所共同呼叫的邏輯或責任(例如事務處理、日誌管理、許可權控制等)封裝起來,便於減少系統的重複**,降低模組間的耦合度,並有利於未來的可擴充套件性和可維護性。使用aop之後我們可以把一些通用功能抽象出來,在需要用到的地方直接使用即可,這樣可以大大簡化**量,提高了系統的擴充套件性。

spring aop是基於動態**的,如果要**的物件實現了某個介面,那麼spring aop就會使用jdk動態**去建立**物件;而對於沒有實現介面的物件,就無法使用jdk動態**,轉而使用cglib動態**生成乙個被**物件的子類來作為**。

spring aop屬於執行時增強,而aspectj是編譯時增強。

spring aop基於**(proxying),而aspectj基於位元組碼操作(bytecode manipulation)。

aspectj相比於spring aop功能更加強大,但是spring aop相對來說更簡單。如果切面比較少,那麼兩者效能差異不大。但是,當切面太多的話,最好選擇aspectj,它比springaop快很多。

Spring IOC和DI以及AOP理解

這三個概念可能大家都不陌生,在面試中經常會出現關於此類的問題,關於對他們的個人理解如下。ioc其實就是控制反轉,控制指的是物件的建立 管理 例項化權利,反轉指的是控制權交給了外部容器spring框架,打個比喻,我在專案中創造了乙個物件類,在業務層需要用到他了,一般的辦法是什麼?是不是new物件啊,畢...

Spring IOC 和 AOP 部分原始碼分析

為beanfactory 物件執行後續處理 在上下文context中註冊bean 為bean註冊攔截處理器 aop相關 初始化上下文訊息 初始化事件多播 初始化主題資源 註冊自定義 例項化所有非lazy init 的singleton 例項 發布相應事件 public void refresh th...

Spring IOC與AOP的個人理解

ioc 控制反轉 又名 依賴注入 正常情況下 無ioc 你製作一件家具 你需要錘子,自己去找錘子 你需要扳手,自己去找扳手 你需要鋸子,自己去找鋸子 家具完成了 ioc情況下 製作前,你把錘子,扳手,鋸子給管家 所以稱為 依賴注入 你製作一件家具 你需要錘子,管家遞給你錘子 所以稱為 控制反轉 你需...