java - 构造函数调用不同类的 AspectJ 切入点 - 识别创建的对象类型

标签 java aop aspectj

我正在使用 AspectJ,我已经定义了一个切入点来捕获几个类的构造函数方法的执行,如下所示:

pointcut newobject(): execution(class1.new(..) || class2.new(..) || class3.new(..));

那我有

after()returning():newobject(){ 

在这里我想根据刚创建的对象是 class1、class2 还是 class3 做不同的事情 如果有一种方法可以在此时引用对象的类型而不必拆分切入点?

最佳答案

您的切入点语法错误。您不能在一个 execution 切入点中链接多个方法或构造函数模式。相反,您需要链接多个 execution 切入点,或者如果可能的话,使用像 MyClass* 这样的 clown 来捕获多个切入点。一个小例子:

pointcut newobject(Object createdObject) :
    (execution(class1.new(..)) || execution(class2.new(..)) || execution(class3.new(..)))
        && this(createdObject);

after(Object createdObject) : newobject(createdObject) {
    System.out.println(thisJoinPoint);
    System.out.println(createdObject);
    System.out.println(createdObject.getClass());
}

this 绑定(bind)到变量名后,您可以用它做任何您喜欢的事情。

关于java - 构造函数调用不同类的 AspectJ 切入点 - 识别创建的对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16383922/

相关文章:

java - 填充二维数组中的主对角线

java - 尝试对空对象引用调用接口(interface)方法 'java.lang.Object[] java.util.Collection.toArray()'

自定义注释上的 Spring 切入点 XML 表达式

c# - NServiceBus 中的 AoP 支持?

java - 如何使用 AspectJ 修改字段值

java - AspectJ 从依赖编织不适用于项目

java - 如何在 Apache Flink 中平面映射到数据库?

java - Eratosthenes 的并行筛选 - Java 多线程

java - 根据建议的对象调用位置应用方面

java - 从 LTW 的属性文件中读取 Aspectj 切入点定义