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