網頁

2019/2/24

Spring AOP 取得切入對象的Class名稱,Method名稱及輸入參數

Spring AOP取得類別及方法名稱的做法如下。

package com.abc.demo.aop;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class DemoAspect {

    @Pointcut("execution(* com.abc.demo.controller..*(..))") // 切入點為com.abc.demo.controller下的所有類別的所有方法
    public void pointcut() {
    }

    @Before("pointcut()")
    public void before(JoinPoint joinPoint) {
        String className = joinPoint.getTarget().getClass().getName(); // 取得切入點的類別名稱
        String methodName = joinPoint.getSignature().getName();        // 取得切入點的方法名稱

        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
        Parameter[] parameters = signature.getMethod().getParameters(); // 取得方法輸入參數資訊
        Object[] args = joinPoint.getArgs(); // 取得輸入參數值
        ...
    }

}

參考:

沒有留言:

張貼留言