[Spring笔记] Spring-34-AOP环绕通知中的Signature

Spring-34-AOP环绕通知中的Signature

ProceedingJoinPoint 中获取 Signature

在 Around 环绕通知中,ProceedingJoinPoint 类作为参数传入,调用此类中的 getSignature() 方法可获得 Signature,Signature 中可以获取到原始方法的信息

原始方法为 com.mzz.service 包下的 AccountService 接口中的 selectAll() 方法,返回类型是 List,示例如下:

@Around("servicePt()")
public void runSpeed(ProceedingJoinPoint pjp) throws Throwable {
          
   
    // 获取 Signature
    Signature signature = pjp.getSignature();
    
    System.out.println(signature.toString());
    // 输出:List com.mzz.service.AccountService.selectAll()
    System.out.println(signature.toLongString());
    // 输出:public abstract java.util.List com.mzz.service.AccountService.selectAll()
    System.out.println(signature.toShortString());
    // 输出:AccountService.selectAll()
    System.out.println(signature.getDeclaringType());
    // 输出:interface com.mzz.service.AccountService
    System.out.println(signature.getDeclaringTypeName());
    // 输出:com.mzz.service.AccountService
    System.out.println(signature.getName());
    // 输出:selectAll
}

Signature 获取原始方法的信息,可以用于通配符匹配切入点时,区分不同的原始方法


视频链接:

经验分享 程序员 微信小程序 职场和发展