首先我尝试xml配置:
<aop:aspect>
<aop:declare-parents types-matching="DBOperations.ILearningData+"
implement-interface="DBOperations.ISaveResults"
delegate-ref="saverExtension"/>
</aop:aspect>
而且效果很好。
现在我尝试制作aspectj,它应该做同样的事情:
public aspect ASaveResults {
public ASaveResults() { }
declare parents : TSaveResults implements ILearningData;
}
其中 TSaveResults 与 bean“saverExtension”相同。
我运行我的代码:
...
@Value("#{learningData}")
protected ILearningData saver;
...
((ISaveResults)saver).saveResults();
并得到错误:
线程“AWT-EventQueue-0”中的异常 java.lang.ClassCastException:sun.proxy.$Proxy12 无法转换为 DBOperations.ISaveResults
我的aspectj有什么问题?
我也尝试了这段代码,但没有成功:
public aspect ASaveResults {
public ASaveResults() { }
declare parents : ISaveResults implements ILearningData;
public void saveResults() {
System.out.println("saver aspect");
}
}