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