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框架

aspectJ中切面方法的参数:JoinPoint参数的使用

上一篇:HTML文本的各种属性


下一篇:8、Linux CentOS 安装.Net Core 3.1