当前位置: 首页 > 面试题库 >

切入点不适用于通用接口

祝昊东
2023-03-14
问题内容

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

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

凡ItemReader接口是一个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是通用接口,因此切入点无法正确匹配。如果是这样,我该如何编写切入点表达式以匹配通用接口?


问题答案:

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

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

我也不需要使用Map +(我想那是因为我们正在使用接口),并且Map的通用性质也没有关系。

您确定ItemReader接口类可用并且您有可用的实现吗?这就是错误消息的含义(如果在测试切入点中输入虚拟类名,则可以得到该错误信息)。也许尝试记录/打印

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

和您预期的实现类类似?



 类似资料:
  • 我在Google云平台上创建了一个kubernetes集群,之后,我在集群上安装了helm/Tiller,之后,我安装了带有helm的traefik,就像官方文档所说的那样。 现在我试图为服务创建一个入口,但是如果我将注释,则不会创建入口的负载均衡器。但是如果没有注释,它将使用默认入口。(服务类型为nodeport) 编辑:我还在一个干净的google cloud kubernetes集群中尝试了

  • 问题内容: 我开始学习node.js,现在我只是想用node执行我的旧无节点应用程序。在这个应用程序中,我有一个html页面,其中的正文调用了onload js函数。工作正常。 现在我有一个节点应用程序:app.js,很简单: 在.html中,我仍然有: 但我要加载的功能不再加载。 有什么线索吗? 谢谢 问题答案: 您没有在问题中提供很多信息,但是根据您提供的信息,我几乎没有什么建议: 意见建议

  • 我正在尝试使用Omnikey 5421将Mifare Plus卡切换到SL1模式,然而,使用文档中指示的“通用卡命令”界面似乎不起作用(除了0x9000,卡不返回任何类型的输出,0x9000似乎只是命令成功发送的ACK-在0x90 0x00之前的响应中应该有额外的字节,这些字节来自芯片本身)。 该序列使用 SCardTransmission 发送: 0xFF 0xA0 0x00 0x07 0x03

  • 问题内容: Pycharm 2016.2.3,Mac OS X 10.11.1,Python 3.5(Homebrew); 我有这个文件夹结构 所以我的预期输出是 从PyCharm运行时,此方法工作正常。但是,当我从终端运行它时,我收到一个ImportError: 我已经找到了这个问题,这是关于相同的问题。但是,没有建议的解决方案对我有用,因为我确实使用的是与PyCharm相同的Python解释器

  • 两个无状态EJB及其远程接口。EJB1被注入EJB2 > EJB2还使用一些可选包(在其清单中声明) WebLogic应用服务器(10.3.3) 两个EJB被打包成两个单独的JAR文件 如果将两个JAR文件打包到一个EAR文件中并部署,则依赖注入工作。但是如果我单独部署它们,即使我首先部署了EJB1并在Weblogic(com.xxx.EJB1#com.xxx.layer1中验证了全局JNDI名称

  • 问题内容: 如何编写适用于方法执行的AspectJ切入点,该方法执行会使用注释覆盖接口方法?例如: 仅当带有注释本身时,切入点才匹配。还有另一种方法吗? 问题答案: 正如Nicholas指出的那样,这在AspectJ中是不可能的。这是无法实现的更多证据(摘自http://www.eclipse.org/aspectj/doc/released/adk15notebook/annotations-