方法变量上的AspectJ切入点,是否可能?

我一直在使用AspectJ,它在包含注释的对象范围字段上运行良好。我刚刚遇到一种情况,我想要注释一个方法范围的变量,它将与我的切入点一起工作,但我遇到了麻烦。 这是我正在使用的切入点。如果我的变量是对象的字段,它工作正常,但如果我将范围缩小到方法(在方法内声明的变量),那么它不再工作,我不知道为什么。让我知道我能做些什么,谢谢。
 after(final Trigger trigger): set(@Triggereable * *) && args(trigger)
 {
  System.out.println("trigger flush");
 }
此外,这是我想要工作的例子。在实例化Trigger时,应触发上面的System.out.println:
public void foo()
{
   @Triggereable
   private Trigger trigger = new Trigger();
}
    
已邀请:
AspectJ目前不支持局部变量的切入点(阅读FAQ条目)。 我似乎记得最近关于可能很快添加的这种功能的讨论,但我在AspectJ问题跟踪器和邮件列表档案中找不到它。     
如果遇到这种情况,您可能会尝试更改实施,而不是应用实际的交叉问题。基本上,不应该使用AOP和AspectJ。 作为解决方法,您可以将相关功能提取到单独的方法中,然后将方面应用于该方法,或者,您可以使用around建议将整个方法替换为该局部变量。 更重要的是,在您的特定示例中,切入点可以应用于给定方法范围内的构造函数执行,因此您可以在不绑定到局部变量的情况下执行相同的操作。     

要回复问题请先登录注册