首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pointcut不适用于泛型接口

Pointcut不适用于泛型接口
EN

Stack Overflow用户
提问于 2009-07-15 14:54:08
回答 1查看 4.1K关注 0票数 3

我使用的是Spring框架(2.5)和它的AOP特性。我有一个切入点表达式,比如

代码语言:javascript
复制
@Pointcut("execution(public * org.springframework.batch.item.ItemReader+.read(..))")
public void itemReaderMethods() {}

其中ItemReader interface是一个Spring接口,它的签名是:

代码语言:javascript
复制
org.springframework.batch.item.ItemReader<T>

该接口有一个名为'read‘的方法,我希望对其应用通知:方法签名为:

代码语言:javascript
复制
org.springframework.batch.item.ItemReader.read()

但是,当我使用上面的切入点表达式运行我的应用程序时,我得到了以下异常:

java.lang.IllegalArgumentException:警告此类型名称没有匹配项: org.springframework.batch.item.ItemReader Xlint:invalidAbsoluteTypeName

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-07-15 18:26:48

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

代码语言:javascript
复制
@Around(value="execution(* java.util.Map.size(..))")

我也不需要使用Map+ (我假设这是因为我们使用的是接口),Map的泛型性质也无关紧要。

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

代码语言:javascript
复制
Class.forName("org.springframework.batch.item.ItemReader")

对于您期望的实现类,是否也是如此?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1131910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档