Pin*_*est 3 constructor annotations aspectj pointcut
这是注释:
@Target(value = ElementType.TYPE)
@Retention(value = RetentionPolicy.RUNTIME)
@Inherited
public @interface MyAnnotation {
String name();
}
Run Code Online (Sandbox Code Playgroud)
这是一个带注释的类:
@MyAnnotation(name="foo")
public class ClassA {
public ClassA() {
// Do something
}
}
Run Code Online (Sandbox Code Playgroud)
这是第二个带注释的类:
@MyAnnotation(name="bar")
public class ClassB {
public ClassB(String aString) {
// Do something
}
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个aspectj切入点,正确匹配ClassA和ClassB的构造函数,而不匹配任何其他未注释的类的构造函数MyAnnotation.
你的切入点应如下所示:
execution((@MyAnnotation *).new(..))
Run Code Online (Sandbox Code Playgroud)
如果注释位于另一个包中:
execution((@de.scrum_master.aop.demo.MyAnnotation *).new(..))
Run Code Online (Sandbox Code Playgroud)
或者,如果您不想完全限定包:
execution((@*..MyAnnotation *).new(..))
Run Code Online (Sandbox Code Playgroud)
编辑:好的,在评论中有关于您的问题的更多信息:
构造函数执行没有可以捕获的返回值
after() returning(Object myObject) : myJoinpoint()
Run Code Online (Sandbox Code Playgroud)
这仅适用于方法.所以请使用
after(Object myObject) returning : myJoinpoint() && this(myObject)
Run Code Online (Sandbox Code Playgroud)
相反,如果你确实需要构造的对象用于任何目的.
| 归档时间: |
|
| 查看次数: |
6336 次 |
| 最近记录: |