AOP:面向切面編程
通過預(yù)編譯的方式和運行期動態(tài)代理實現(xiàn)程序功能的統(tǒng)一維護的一種技術(shù)
AOP的底層原理就是動態(tài)代理
java的動態(tài)代理有 jdk動態(tài)代理和CGLib動態(tài)代理
簡單來說,AOP就是將相同邏輯的重復(fù)代碼橫向抽取出來足画,使用動態(tài)代理技術(shù)將這些重復(fù)代碼織入到目標對象方法中啊易,實現(xiàn)和原來一樣的功能
AOP術(shù)語
1抛蚤、連接點
能夠被攔截的地方:Spring AOP是基于動態(tài)代理的献联,所以是方法攔截的再层。每個成員方法都可以稱之為連接點~
2青瀑、切點
具體定位的連接點:上面也說了,每個方法都可以稱之為連接點乖订,我們具體定位到某一個方法就成為切點。
3具练、增強/通知
表示添加到切點的一段邏輯代碼乍构,并定位連接點的方位信息。
簡單來說就定義了是干什么的扛点,具體是在哪干
Spring AOP提供了5種Advice類型給我們:前置(@Before)哥遮、后置(@After)、返回(@AfterReturning)陵究、異常(@AfterThrowing)眠饮、環(huán)繞(@Around)給我們使用!
4铜邮、織入
將增強/通知添加到目標類的具體連接點上的過程仪召。
5、引入/引介
引入/引介允許我們向現(xiàn)有的類添加新方法或?qū)傩运伤狻J且环N特殊的增強返咱!
6、切面
切面由切點和增強/通知組成牍鞠,它既包括了橫切邏輯的定義咖摹、也包括了連接點的定義。
IOC 控制反轉(zhuǎn)
傳統(tǒng)的做法是难述,在A類中new B類萤晴,實現(xiàn)依賴。
IOC是在系統(tǒng)運行中胁后,動態(tài)的向某個對象提供它所需要的其他對象店读。這一點是通過DI(Dependency Injection,依賴注入)來實現(xiàn)的攀芯。
IOC是將依賴交由容器來做屯断,就好像是婚介所,大家都把自己的需求以及自我介紹都放到容器里面,然后由中介為你牽線殖演,選擇你想要的對象氧秘,實現(xiàn)依賴。
控制反轉(zhuǎn)趴久,顧名思義丸相,就是將以前由類自己去實現(xiàn)依賴的方式換成由容器來實現(xiàn)實現(xiàn)并注入依賴