我使用的是Spring框架(2.5)和它的AOP特性。我有一个切入点表达式,比如
@Pointcut("execution(public * org.springframework.batch.item.ItemReader+.read(..))")
public void itemReaderMethods() {}其中ItemReader interface是一个Spring接口,它的签名是:
org.springframework.batch.item.ItemReader<T>该接口有一个名为'read‘的方法,我希望对其应用通知:方法签名为:
org.springframework.batch.item.ItemReader.read()但是,当我使用上面的切入点表达式运行我的应用程序时,我得到了以下异常:
java.lang.IllegalArgumentException:警告此类型名称没有匹配项: org.springframework.batch.item.ItemReader Xlint:invalidAbsoluteTypeName
我的猜测是,由于ItemReader是一个通用接口,因此切入点不能正确匹配。如果是这种情况,我如何编写切入点表达式来匹配泛型接口呢?
发布于 2009-07-15 18:26:48
泛型对我来说似乎不是问题--我可以在Map操作上创建一个测试切入点:
@Around(value="execution(* java.util.Map.size(..))")我也不需要使用Map+ (我假设这是因为我们使用的是接口),Map的泛型性质也无关紧要。
您确定ItemReader接口类可用,并且您有可用的实现吗?这就是错误消息所暗示的(如果我在我的测试切入点中放入一个虚设的类名,我就可以得到它)。也许可以尝试记录/打印
Class.forName("org.springframework.batch.item.ItemReader")对于您期望的实现类,是否也是如此?
https://stackoverflow.com/questions/1131910
复制相似问题