Java 切入点不适用于通用接口

Java 切入点不适用于通用接口,java,spring,aop,Java,Spring,Aop,我正在使用Spring框架(2.5)及其AOP特性。我有一个切入点表达式,比如 @Pointcut("execution(public * org.springframework.batch.item.ItemReader+.read(..))") public void itemReaderMethods() {} 其中是Spring接口,其签名为: org.springframework.batch.item.ItemReader<T> 但是,当我使用上述切入点表达式运行应用

我正在使用Spring框架(2.5)及其AOP特性。我有一个切入点表达式,比如

@Pointcut("execution(public * org.springframework.batch.item.ItemReader+.read(..))")
public void itemReaderMethods() {}
其中是Spring接口,其签名为:

org.springframework.batch.item.ItemReader<T>
但是,当我使用上述切入点表达式运行应用程序时,我得到了以下异常:

java.lang.IllegalArgumentException:警告与此类型名称不匹配:org.springframework.batch.item.ItemReader[Xlint:InvalidaBSolutionPename]


我的猜测是,由于ItemReader是一个通用接口,切入点没有正确匹配。如果是这种情况,我如何编写切入点表达式来匹配泛型接口?

泛型对我来说似乎不是问题-我可以在映射操作上创建测试切入点:

@Around(value="execution(* java.util.Map.size(..))")
我也不需要使用Map+(我想这是因为我们使用的是接口),Map的通用性也不重要

您确定ItemReader接口类可用,并且有可用的实现吗?这就是错误消息所暗示的(如果我在测试切入点中放入一个伪类名,我就可以得到它)。也许可以尝试记录/打印

Class.forName("org.springframework.batch.item.ItemReader")

同样,对于预期的实现类?

情况并非如此。由于类型擦除,它不会在泛型参数上区分。
Class.forName("org.springframework.batch.item.ItemReader")