AspectJ declaremixin与类级别注释不匹​​配

时间:2015-06-09 11:52:13

标签: java spring aspectj

早上好,

我已经定义了一个自定义注释,我想用它来将某些类标记为Auditable

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Auditable {

}

并声明了一个方面来处理标有此注释的所有类。我在Eclipse中使用AspectJ

@Aspect
public class AuditableClassAspect extends AbstractAuditableAspect {

@Autowired
private ApplicationContext applicationContext;

// Makes the bean auditable
@DeclareMixin(value="@Auditable *")
public Auditable auditableBeanFactory(Object instance) {
    // Use a bean delegator as a mixin object
    Auditable mixin = applicationContext.getBean(PersistentDelegate.class);
    mixin.setObject(instance);
    return mixin;
}

@Pointcut("get(* (@Auditable *).*) && this(object)")
public void executionGet(Object object) {}

@Pointcut("set(* (@Auditable *).*) && this(object)")
public void executionSet(Object object) {}  
}

然后我标记了一个类:

@Auditable
public class Report implements Serializable {

private static final long serialVersionUID = 4746372287860486647L;

private String companyName;
private Date reportingDate;

我在Spring中使用AspectJ,并在applicationContext.xml中定义了Aspect

<bean class="com.xxx.aop.AuditableClassAspect" factory-method="aspectOf" />

我的问题是没有匹配的事情发生。方面没有&#t;#34;检测&#34; Report类作为Auditable类。

在eclipse中它没有显示任何匹配。在运行时,当我在Auditable接口中投射报表时,我有一个例外。

你知道什么是不匹配的吗?

有关信息,如果在我的代码中我写      @DeclareMixin(值=&#34; com.xxx.Report&#34) 然后我有匹配和Aspect工作。 注释中是否缺少某些内容?

由于

吉勒

0 个答案:

没有答案