在常見的切面中,常用的參數有:JointPoint和ProceedingJoinPoint,其中ProceedingJoinPoint繼承JointPoint,ProceedingJoinPoint用在@Arround註解的方法參數裏,下面分開談
1.JointPoint的常用方法
public void invoke(JoinPoint joinPoint) throws Throwable{
//攔截的實體類
Object target = joinPoint.getTarget();
//攔截的方法名稱
String methodName = joinPoint.getSignature().getName();
//攔截的方法參數
Object[] argsa = joinPoint.getArgs();
//攔截的放參數類型
Class[] parameterTypes = ((MethodSignature)joinPoint.getSignature()).getMethod().getParameterTypes();
Method method = target.getClass().getMethod(methodName, parameterTypes);
Login login = method.getAnnotation(Login.class);
2. ProceedingJoinPoint的常用方法
用在環繞通知,也就是註解@Arround的方法參數裏,ProceedingJoinPoin有一個proceed方法:
ProceedingJoinPoint繼承JoinPoint子接口,它新增了兩個用於執行連接點方法的方法:
java.lang.Object proceed() throws java.lang.Throwable:通過反射執行目標對象的連接點處的方法;
java.lang.Object proceed(java.lang.Object[] args) throws java.lang.Throwable:通過反射執行目標對象連接點處的方法,不過使用新的入參替換原來的入參。
說人話就是,讓目標方法執行