AOP五種執行時機

2022-08-31 08:39:10 字數 2247 閱讀 7629

動態**四種增強方式

先建立乙個service類

package

com.zzj.calculatar.service;

import

org.springframework.stereotype.service;

@service

public

class calculatorservice implements

icalculatorservice

@override

public

int div(int a, int

b)

}

xml檔案

<

context:component-scan

base-package

="com.zzj"

>

context:component-scan

>

<

aop:aspectj-autoproxy

>

aop:aspectj-autoproxy

>

四種增強:前置增強,後置增強,返回增強,異常增強

@order(1)//

切片執行順序,預設為字典順序

@aspect

@component

public

class

calculatoraspect

//前置增強:目標方法執行之前先呼叫增強方法

@before("pointcut()")

public

void

before(joinpoint jp)

//後置增強:目標方法執行之後呼叫增強方法

@after("pointcut()")

public

void

after(joinpoint jp)

//返回增強:目標方法執行return之後返回結果之前呼叫增強方法,如果出異常則不執行

@afterreturning(value="pointcut()",returning = "result")

public

void

afterreturning(joinpoint jp,object result)

//異常增強:目標方法執行產生異常呼叫增強方法

@afterthrowing(value="pointcut()",throwing = "e")

public

void

afterreturning(joinpoint jp,exception e)

}

測試類:

public

class

test

}

測試結果:

當把除法的分母1改為0出現異常時,測試結果:

環繞增強,包含前面四種增強

@order(1)//

切片執行順序,預設為字典順序

@aspect

@component

public

class

calculatoraspect

//環繞增強

@around(value="pointcut()")

public

object around(proceedingjoinpoint joinpoint)

finally

//返回增強

system.out.println(target.getclass().getname()+":result of the "+methodname+" method:"+result);

}catch

(throwable e)

return

result;}}

測試類:

public

class

test

}

測試結果:

當把除法分母1改為0,報錯時測試結果如下:

runtime 執行時機制

首先,第乙個問題,1 runtime實現的機制是什麼,怎麼用,一般用於幹嘛?這個問題我就不跟大家繞彎子了,直接告訴大家,runtime是一套比較底層的純c語言api,屬於1個c語言庫,包含了很多底層的c語言api。在我們平時編寫的oc 中,程式執行過程時,其實最終都是轉成了runtime的c語言 r...

runtime 執行時機制

必備常識 1.ivar 成員變數 2.method 成員方法相關應用 1.nscoding 歸檔和解檔,利用runtime遍歷模型物件的所有屬性 2.字典 模型 利用runtime遍歷模型物件的所有屬性,根據屬性名從字典中取出對應的值,設定到模型的屬性上 3.kvo 利用runtime動態產生乙個類...

runtime 執行時機制

runtime 執行時機制 一 runtime是什麼 1 runtime是乙個全動態語言,是基於c語言的庫,裡面包含了很多底層的c語言函式。2 平時編寫的oc 在程式執行過程中,其實最終都是轉成了runtime的c語言 runtime算是oc方法的底層實現,換句話說oc的實現也就是runtime的底...