aspectJ中切面方法的參數:JoinPoint參數的使用


package com.bjpowernode.Utils;

import jdk.internal.org.objectweb.asm.tree.analysis.Value;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;

import java.io.ObjectInputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

/**切面類,實現顯示執行時間的方法
* @Aspect:是aspectJ中的注解
* 作用:標識當前類是切面類
* 切面類:是用來給業務方法增加功能的類,在這個類中有切面的功能代碼
* 位置:在類定義的上面
* */
@Aspect
public class ShowTime {
    /**
     * 切面方法:
     * 要求公共的方法(public),
     * 無返回值的方法,
     * 方法名稱自定義
     * 可以有參數,參數不是自定義的
     * 如果你的切面功能中需要用到方法的信息,就加入JoinPoint
     * 這個JoinPoint參數的值是由框架賦予,必須是第一個位置的參數
     * */
    /**
     * @Before:前置通知注解
     * 屬性:value 指定了切入點的位置
     */
    @Before(value = "execution(* *..SomeServiceImpl.do*(..))")
    public void showCurrentTime(JoinPoint jp){
        //獲取業務方法的完整定義
        System.out.println("方法的簽名(定義)"+jp.getSignature());
        System.out.println("方法的名稱"+jp.getSignature().getName());
        Object[] args = jp.getArgs();
        for(Object arg:args){
            System.out.println(arg);
        }
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss SSS");
        String sdate =sdf.format(date);
        System.out.println("1前置執行:執行了切面代碼,展示當前時間:"+sdate);
    }
}

方法的簽名(定義)void com.bjpowernode.service.SomeService.doSome(String,Integer)
方法的名稱doSome
lisi
22
1前置執行:執行了切面代碼,展示當前時間:2021/03/03 23:46:57 283
Hello lisi歡迎使用spring框架


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM