Spring日常笔记记录13--@Before 前置通知-方法有 JoinPoint 参数
在目标方法执行之前执行。被注解为前置通知的方法,可以包含一个 JoinPoint 类型参数。该类型的对象本身就是切入点表达式。通过该参数,可获取切入点表达式、方法签名、目标对象等。
不光前置通知的方法,可以包含一个 JoinPoint 类型参数,所有的通知方法均可包含该参数
/**
* 指定通知方法中的参数:JoinPoint
* JoinPoint:业务方法,要加入切面功能的业务方法
* 作用:可以在通知方法中获取方法执行时的信息,例如方法名称,方法的实参
* 如果切面功能中需要用到方法的信息,就加入JoinPoint
* 这个JoinPoint参数的值是由框架赋予,必须是第一位置的参数
*/
@Before(value = "execution(* *..SomeServiceImpl.do*(..))")
public void myBefore(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);
}
//就是你切面要执行的功能代码
System.out.println("4前置通知,切面功能:在目标方法之前输出执行时间:"+new Date());
}
运行结果: