1. 程式人生 > >Spring的AOP和IoC/DI

Spring的AOP和IoC/DI

一、Ioc、DI

控制反轉、依賴注入

在A類中呼叫B類的方法,那麼我們就稱 A依賴B,B為被依賴(物件)

傳統做法:

(1)直接在A(方法)中new出B類物件,然後呼叫B類方法 —— 硬編碼耦合;

(2)通過簡單工廠獲取B類物件,然後呼叫B類的方法 —— 擺脫了與B的耦合,卻又與工廠產生了耦合;

以上兩種做法,都是在A中主動去new或呼叫簡單工廠的方法產生B的物件,注意,關鍵字是“主動”

Spring框架

在spring中,B的例項物件被看成Bean物件,這個Bean物件由spring容器進行建立和管理,當我們在配置檔案中配置<Bean>下的<property>子元素時,spring就會自動執行在A中對B物件的setter方法(即A中需要有對B物件的setter方法),

如此一來,A獲取B的例項物件就不是由自己主動去獲取,而是被動接受spring給它設值,那麼,這個主動變為被動,就可以理解為“控制反轉”。

而另一種說法,從spring容器的角度上看,它負責把A的依賴物件B(B是被依賴物件)注入給了A,所以我們可以理解為“依賴注入”;

<bean id="userAction" class="com.router.action.UserAction" scope="prototype">
        <!-- 注入Service -->
        <property name="userService" ref="userService" />
</bean>

 

當然也可以用@Autowired注入。

二、AOP

AOP —— Asepct-Orentid-Programming,面向切面程式設計

Aop 的作用在於分離系統中的各種關注點,將核心關注點和橫切關注點分離開來。

AOP的核心思想就是“將應用程式中的商業邏輯同對其提供支援的通用服務進行分離。”

@Before,@After