gpt4 book ai didi

constructor - 如何定义一个aspectj切入点来挑选具有特定注释的类的所有构造函数?

转载 作者:行者123 更新时间:2023-12-01 23:10:54 24 4
gpt4 key购买 nike

这里是注释:

@Target(value = ElementType.TYPE)
@Retention(value = RetentionPolicy.RUNTIME)
@Inherited
public @interface MyAnnotation {
String name();
}

这是一个带注释的类:

@MyAnnotation(name="foo")
public class ClassA {
public ClassA() {
// Do something
}
}

这是第二个带注释的类:

@MyAnnotation(name="bar")
public class ClassB {
public ClassB(String aString) {
// Do something
}
}

我正在寻找一个 aspectj 切入点,它正确匹配 ClassA 和 ClassB 的构造函数,而不匹配任何其他未由 MyAnnotation 注释的类的任何其他构造函数。

最佳答案

你的切入点应该是这样的:

execution((@MyAnnotation *).new(..))

如果注解在另一个包中:

execution((@de.scrum_master.aop.demo.MyAnnotation *).new(..))

或者,如果您不想完全限定软件包:

execution((@*..MyAnnotation *).new(..))

编辑:好的,请在评论中提供有关您问题的更多信息:

构造函数执行没有可以捕获的返回值

after() returning(Object myObject) : myJoinpoint()

这仅适用于方法。所以请使用

after(Object myObject) returning : myJoinpoint() && this(myObject)

如果您出于任何目的确实需要构造对象。

关于constructor - 如何定义一个aspectj切入点来挑选具有特定注释的类的所有构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12184391/

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