gpt4 book ai didi

java - 没有特定注释的方法的所有执行上的 AspectJ 切入点

转载 作者:行者123 更新时间:2023-12-01 11:50:19 28 4
gpt4 key购买 nike

如何编写一个切入点来触发方法,例如MyClass 上的所有 setter 都被执行,但该方法缺少一些特定的注释,例如@Ann1 和 @Ann2

最佳答案

import java.lang.annotation.*;

@Retention(RetentionPolicy.RUNTIME)
@interface Ann1 {}

@Retention(RetentionPolicy.RUNTIME)
@interface Ann2 {}

public class Code {
public void setFoo() {}
@Ann1 public void setBar() {}
@Ann2 public void setBoo() {}
@Ann1 @Ann2 public void setFar() {}
}

aspect X {
before(): execution(!@Ann1 !@Ann2 * set*(..)) {}
}

现在编译它:

ajc -1.5 -showWeaveInfo Code.java

Join point 'method-execution(void Code.setFoo())' in Type 'Code' (Code.java:10) advised by before advice from 'X' (Code.java:17)

请注意,仅建议使用setFoo()。像这样的切入点:

before(): execution(!@Ann1 * set*(..)) || execution(!@Ann2 * set*(..)) {}

将匹配@Ann1或@Ann2缺失的位置(因此前3个setter)。

关于java - 没有特定注释的方法的所有执行上的 AspectJ 切入点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28848460/

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