動態**:指在程式執行期間動態的將某段**切入到指定方法指定位置進行執行的程式設計方式。
1.匯入aop模組:spring aop:(spring-aspects)
2.定義乙個業務邏輯類(mathcalculator);在業務執行的時候將日誌執行列印(方法之前、方法執行結束、方法出現異常,***)
3.定義乙個切面類(logaspects):切面類裡面的方法要動態感知mathcalculator.div執行到**然後動態執行
通知方法:
前置通知(@before):logstart: 在目標方法(div)執行之前執行
後置通知(@after):logend:在目標方法(div)執行結束以後
返回通知(@afterreturning):logreturn:在目標方法(div)正常返回之後執行(無論方法正常結束還是異常都 呼叫)
異常通知(@afterthrowing):logexception:在目標方法(div)出現異常之後
環繞通知(@around):動態**,手動推進目標方法執行(joinpoint.procced)
4.給切面類的目標方法標註何時何地地執行(通知註解)
抽取公共的切入點表示式:1.本類引用;2.其它的切面引用
@pointcut("execution(public int com.atguigu.aop.mathcalculator.*(..))")
5.將切面類和業務邏輯類(目標方法所在類)都加入到容器中;
6.告訴spring哪個類是切面類(給切面類加乙個註解:@aspect)
7.給配置類中加@enableaspectjautoproxy(開啟基於註解的aop模式)
關鍵的三步:
1)、將業務邏輯元件和切面類都加入到容器中,告訴spring哪個是切面類(@aspect)
2 ) 、將切面類上的每個通知方法上標註通知註解,告訴spring何時何地執行(切入點表示式)
3 ) 、 開啟基於註解的aop模式;@enableaspectjautoproxy
Spring中IOC和AOP學習
spring中最重要的就是ioc和aop ioc也稱控制反轉,其實是和依賴注入的含義是一樣的 通常是以下兩種 1.設值傳入 set注入 一般是在spring配置的xml中書寫 注意一般是設定類的property的name和ref name springaction class com.bless.s...
Spring學習筆記 AOP
1 匯入aop模組 spring aop spring aspects 2 定義乙個業務邏輯 3 定義乙個日誌切面類 通知方法 前置通知 before 在目標方法執行之前執行 後置通知 after 在目標方法執行結束後執行 返回通知 afterrerurning 在目標方法正常返回之後執行 異常通知...
Spring學習 aop學習記錄
spring aop 面向方面程式設計 框架,用於在模組化方面的橫切關注點。簡單得說,它只是乙個 攔截一些過程,例如,當乙個方法執行,spring aop 可以劫持乙個執行的方法,在方法執行之前或之後新增額外的功能。在spring aop中,有 4 種型別通知 advices 的支援 hijackb...