Spring入門導讀 IoC和AOP

2021-09-20 16:30:59 字數 1511 閱讀 9177

和mybatis系列不同的是,在正式開始spring入門時,我們先來了解兩個關於spring核心的概念,ioc(inverse of control)控制反轉和aop()面向切面程式設計。

1.ioc(inversion of control)控制反轉

什麼是控制反轉呢?可以這麼通俗的來解釋,我們通常寫**當乙個類會關聯另乙個類是會直接在這個類裡new,例如:

1 package day_30_spring; 2  3 /** 4  * @author 余林豐 5  * 6  * 2023年10月30日 7  */ 8 public class people 17     18 }
現在我們將物件的控制權「反轉」,交由第三方容器進行管理,即交由spring容器幫我們管理,使得我們不再people**中與eat物件緊耦合。在看下面的**:

1 package day_30_spring; 2  3 /** 4  * @author 余林豐 5  * 6  * 2023年10月30日 7  */ 8 public class people 17     18 }
eat類是繼承至action介面的,這實際上就是通過依賴注入(di,dependency inversion)的方式來實現控制反轉。通過構造方法來注入。不依賴於具體的action介面實現,我們只需要傳遞乙個action介面類進去即可。相比於之前的「傳統」**緊緊的依賴action的具體實現eat類,這個**實際上解了**的耦合性。spring有兩種構造方式,一種就是我們上面說到的構造器注入,另一種就是set方法注入。所以,ioc的很簡單,目的是解耦,手段是通過依賴注入。spring容器幫我們解決了一切。

2.aop(aspect oriented programming)面向切面程式設計

1 package day_30_spring; 2  3 /** 4  * @author 余林豐 5  * 6  * 2023年10月30日 7  */ 8 public class people 16 }
「單一職責」告訴我們,這樣寫到底好不好呢?日誌記錄是people該做的事嗎?難道它不應該只負責插入資料的操作嗎?正確的做法應該是這麼的在people類中只有這幾句**:

1 package day_30_spring; 2  3 /** 4  * @author 余林豐 5  * 6  * 2023年10月30日 7  */ 8 public class people 13 }
那我們怎麼在insert方法中先記錄日誌呢?我們可以用動態**來實現,即建立乙個**類的物件例項,spring也已經為我們做好了這件事,僅僅需要配置一下幾句話,即可實現。

1 <?xml  version="1.0" encoding="utf-8"?> 2 3      4     5         6             7             8             9         10     11
事實上我們能實現最開始我們「糟糕」**的功能了,而且更優美。在這裡我們僅僅對ioc和aop做乙個簡單的了解,在後面會和mybatis一樣,先學會從第一步配置,再學會怎麼用,最後再來了解框架源**原理等等。

Spring入門導讀 IoC和AOP

和mybatis系列不同的是,在正式開始spring入門時,我們先來了解兩個關於spring核心的概念,ioc inverse of control 控制反轉和aop 面向切面程式設計。1.ioc inversion of control 控制反轉 什麼是控制反轉呢?可以這麼通俗的來解釋,我們通常寫...

spring入門之IOC容器

ioc 其思想是反轉資源獲取的方向,傳統的資源查詢方式要求元件向容器發起請求查詢資源,作為回應,容器適時的返回資源 應用ioc後,容器主動地將資源推送給它所管理的元件,元件選擇一種合適的方式來接受資源 di 是ioc的另一種表達方式 即元件以一些預先定義好的方式 例如setter方法 接受來自容器的...

Spring入門(三)之IoC

一 ioc定義 ioc,即控制反轉。開發者在使用類的例項之前,需要先建立物件的例項。但是ioc將建立例項的任務交給ioc容器,這樣開發應用 時只需要直接使用類的例項,這就是ioc。在討論控制反轉這個概念的過程中,martin fowler提出了乙個更為準確的概念,叫做依賴注入 dependency ...