smu*_*kes 5 java variables methods aspectj pointcut
我一直在使用AspectJ,它在包含注释的对象范围字段上运行良好.我刚刚遇到一种情况,我想要注释一个方法范围的变量,它将与我的切入点一起工作,但我遇到了麻烦.
这是我正在使用的切入点.如果我的变量是对象的字段,它工作正常,但如果我将范围缩小到方法(在方法内声明的变量),那么它不再工作,我不知道为什么.让我知道我能做些什么,谢谢.
after(final Trigger trigger): set(@Triggereable * *) && args(trigger)
{
System.out.println("trigger flush");
}
Run Code Online (Sandbox Code Playgroud)
此外,这是我想要工作的例子.在实例化Trigger时,应触发上面的System.out.println:
public void foo()
{
@Triggereable
private Trigger trigger = new Trigger();
}
Run Code Online (Sandbox Code Playgroud)
如果遇到这种情况,您可能会尝试更改实施,而不是应用实际的交叉问题.基本上,不应该使用AOP和AspectJ.
作为解决方法,您可以将相关功能提取到单独的方法中,然后将方面应用于该方法,或者,您可以使用around建议将整个方法替换为该局部变量.
更重要的是,在您的特定示例中,切入点可以应用于给定方法范围内的构造函数执行,因此您可以在不绑定到局部变量的情况下执行相同的操作.