gpt4 book ai didi

java - 切入点不适用于通用接口(interface)

转载 作者:行者123 更新时间:2023-11-30 12:01:08 24 4
gpt4 key购买 nike

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

@Pointcut("execution(public * org.springframework.batch.item.ItemReader+.read(..))")
public void itemReaderMethods() {}

哪里ItemReader interface是一个 Spring 接口(interface),它的签名是:

org.springframework.batch.item.ItemReader<T>

该接口(interface)有一个名为“read”的方法,我想为其应用建议:方法签名是:

org.springframework.batch.item.ItemReader.read()

但是,当我使用上述切入点表达式运行我的应用程序时,出现以下异常:

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

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

最佳答案

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

@Around(value="execution(* java.util.Map.size(..))")

我也不需要使用 Map+(我假设那是因为我们正在使用接口(interface)),而且 Map 的通用性也不重要。

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

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

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

关于java - 切入点不适用于通用接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1131910/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com