gpt4 book ai didi

java - 方法变量上的 AspectJ 切入点,这可能吗?

转载 作者:搜寻专家 更新时间:2023-10-31 19:58:30 24 4
gpt4 key购买 nike

我使用 AspectJ 有一段时间了,它在包含注释的对象范围字段上效果很好。我刚遇到一种情况,我想注释一个方法范围的变量,该变量将与我的切入点一起使用,但我遇到了麻烦。

这是我正在使用的切入点。如果我的变量是对象的一个​​字段,它工作正常,但如果我将范围缩小到一个方法(在方法内部声明的变量),那么它就不再工作了,我不确定为什么。让我知道我能做什么,谢谢。

 after(final Trigger trigger): set(@Triggereable * *) && args(trigger)
{
System.out.println("trigger flush");
}

此外,这是我想要工作的一个例子。上面的 System.out.println 应该在触发器被实例化时触发:

public void foo()
{
@Triggereable
private Trigger trigger = new Trigger();
}

最佳答案

如果遇到这种情况,您可能会尝试更改实现而不是应用实际的横切关注点。基本上,这不是 AOP 和 AspectJ 的用途。

作为解决方法,您可以将相关功能提取到一个单独的方法中,然后将您的方面应用到该方法,或者,您可以使用 around 建议将整个方法替换为该局部变量。

此外,在您的特定示例中,切入点可以应用于给定方法范围内的构造函数执行,因此您可以在不绑定(bind)到局部变量的情况下做几乎相同的事情。

关于java - 方法变量上的 AspectJ 切入点,这可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4491486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com