首页 > Web开发 > 详细

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

时间:2021-03-04 10:20:14      阅读:74      评论:0      收藏:0      [点我收藏+]
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参数的使用

原文:https://www.cnblogs.com/lihp-java/p/14477794.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!