早上好,
我已经定义了一个自定义注释,我想用它来将某些类标记为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工作。 注释中是否缺少某些内容?
由于
吉勒