摘要:而面向切面編程理所當(dāng)然關(guān)注于切面,那么什么是切面可以理解為程序執(zhí)行時的某個節(jié)點,或更具體一點,在某個方法執(zhí)行之前,執(zhí)行之后,返回之后等其它節(jié)點。術(shù)語一個切面,可以理解為一個切面模塊,將相關(guān)的增強內(nèi)容寫進(jìn)同一個切面。例如一個負(fù)責(zé)日志的切面。
AOP是什么
AOP全稱 Aspect-Oriented Programming 即面向切面編程。怎么樣,是不是感覺很熟悉?對,類似的還有面向過程編程(Procedure-Oriented Programming),面向?qū)ο缶幊?/strong>(Object-Oriented Programming)。如果對后面兩種編程方式有一定的了解,那么對于AOP想必也就比較容易理解了。
就像面向?qū)ο缶幊?/strong>,關(guān)注點在于對象,即類。而面向切面編程理所當(dāng)然關(guān)注于切面,那么什么是切面?可以理解為程序執(zhí)行時的某個節(jié)點,或更具體一點,在某個方法執(zhí)行之前,執(zhí)行之后,返回之后等其它節(jié)點。
幾個概念的區(qū)別 1. AspectJAspectJ是一個基于Java語言的AOP框架,它采用編譯時增強,會將增強目標(biāo)編譯得到一個新的AOP代理類。
2. Spring AOPSpring提供的AOP框架,使用了和AspectJ一樣的注解,但是通過動態(tài)生成代理類的方式生成AOP代理類。
3. JDK Dynamic AOPSpring AOP中AOP代理的一種實現(xiàn),使用原生JDK反射和動態(tài)代理生成AOP代理,需要代理類與目標(biāo)實現(xiàn)相同的接口。
4. CGLib AOPSpring AOP中AOP代理的另一種實現(xiàn),使用CGLib動態(tài)生成AOP代理類,需要代理類為目標(biāo)類的子類。
AOP術(shù)語 1. Aspect一個切面,可以理解為一個切面模塊,將相關(guān)的增強內(nèi)容寫進(jìn)同一個切面。例如:一個負(fù)責(zé)日志的切面。
2. Join Point代表可以由AOP增強織入的程序執(zhí)行節(jié)點。
3. Advice所要做的增強處理
4. Pointcut切入點,定義了將被Advice增強的一個或多個Join Point,可以使用正則表達(dá)式或模式匹配。
5. Target object被增強的目標(biāo)對象
Adivce的種類 1. Before方法執(zhí)行之前
2. After方法執(zhí)行之后
3. After-returning方法成功執(zhí)行完成之后
4. After-throwing方法拋出異常之后
5. Around環(huán)繞方法執(zhí)行的整個周期
參考鏈接Spring AOP 實現(xiàn)原理與 CGLIB 應(yīng)用
AOP with Spring Framework
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/76555.html
摘要:版本從注解開始由于在本人實際應(yīng)用中使用的是注解配置,也更傾向于了解的整個實現(xiàn),而不僅僅是關(guān)鍵實現(xiàn)。于是本篇源碼解析,將會從注解開始。那么,便從的源碼引用開始吧。的引用先從源碼中找有引用到,用來判斷是否有該注解的代碼。 版本 spring 5.0.8.BUILD-SNAPSHOT aspectjweaver 1.8.13 從注解開始 由于在本人實際應(yīng)用中使用的是注解配置AOP,也更傾...
摘要:版本如何掃描接上一回,講到了方法,該方法的目的是獲取并生成。其中英文為源碼注釋。那么,以上便是通過掃描配置并生成的過程了。一些總結(jié)讀到這兒,如何掃描配置,生成類,并匹配對應(yīng)的整個流程已經(jīng)很清楚了。 版本 spring 5.0.8.BUILD-SNAPSHOT aspectjweaver 1.8.13 如何掃描Advice 接上一回,講到了getAdvicesAndAdvisorsF...
摘要:基礎(chǔ)問題的的性能及原理之區(qū)別詳解備忘筆記深入理解流水線抽象關(guān)鍵字修飾符知識點總結(jié)必看篇中的關(guān)鍵字解析回調(diào)機制解讀抽象類與三大特征時間和時間戳的相互轉(zhuǎn)換為什么要使用內(nèi)部類對象鎖和類鎖的區(qū)別,,優(yōu)缺點及比較提高篇八詳解內(nèi)部類單例模式和 Java基礎(chǔ)問題 String的+的性能及原理 java之yield(),sleep(),wait()區(qū)別詳解-備忘筆記 深入理解Java Stream流水...
摘要:基礎(chǔ)問題的的性能及原理之區(qū)別詳解備忘筆記深入理解流水線抽象關(guān)鍵字修飾符知識點總結(jié)必看篇中的關(guān)鍵字解析回調(diào)機制解讀抽象類與三大特征時間和時間戳的相互轉(zhuǎn)換為什么要使用內(nèi)部類對象鎖和類鎖的區(qū)別,,優(yōu)缺點及比較提高篇八詳解內(nèi)部類單例模式和 Java基礎(chǔ)問題 String的+的性能及原理 java之yield(),sleep(),wait()區(qū)別詳解-備忘筆記 深入理解Java Stream流水...
閱讀 657·2021-11-25 09:43
閱讀 1928·2021-11-17 09:33
閱讀 842·2021-09-07 09:58
閱讀 2076·2021-08-16 10:52
閱讀 494·2019-08-30 15:52
閱讀 1736·2019-08-30 15:43
閱讀 1016·2019-08-30 15:43
閱讀 2938·2019-08-29 16:41