【问题标题】:How to specify single pointcut for all classes that extend a specific class如何为扩展特定类的所有类指定单个切入点
【发布时间】:2016-07-21 14:42:35
【问题描述】:

我有来自不同包的多个类,它们扩展了 Super 类。 我想创建一个 AOP 切入点,它匹配所有扩展 Super 的类中的所有方法。 我试过这个:

@Around("within(com.mypackage.that.contains.super..*)")
public void aroundAllEndPoints(ProceedingJoinPoint joinPoint) throws Throwable {
        LOGGER.info("before Proceed ");
        joinPoint.proceed();
        LOGGER.info("after Proceed");
}

但它不起作用。 有什么建议吗?

【问题讨论】:

    标签: java spring-aop pointcut


    【解决方案1】:

    切入点应该是:

    within(com.mypackage.Super+)
    

    其中com.mypackage.Super 是完全限定的基类名称,+ 表示“所有子类”。这适用于 Spring AOP。在 AspectJ 中,这将匹配太多的连接点,而不仅仅是方法执行。这是另一个适用于 Spring AOP 和 AspectJ 的切入点:

    execution(* com.mypackage.Super+.*(..))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-15
      • 2017-02-10
      • 1970-01-01
      • 2020-07-01
      • 2014-07-16
      • 1970-01-01
      • 2011-07-22
      • 1970-01-01
      相关资源
      最近更新 更多