当前位置: 首页 > 知识库问答 >
问题:

按参数名称列出的Spring AOP切入点表达式

仉运乾
2023-03-14

是否可以根据方法参数名称匹配切入点表达式?

例如,我想将所有方法与雇员ID作为参数进行匹配。

public Employee findById(Integer employeeId);

我无法按数据类型进行匹配,因为它太宽了。

我知道我可以使用通配符匹配任何内容,例如执行(**(..)” 并检查方法体中的参数名称,但这似乎过多?

共有2个答案

吕奇
2023-03-14

Spring AOP不支持基于参数名称的Point Cut。

此处列出了支持的切入点指示器:支持的切入点指示器

阎辰钊
2023-03-14

不可以。您不能根据arg名称进行匹配;但是可以根据arg类型进行匹配。为了解决您的问题,您可以使用最近的切入点表达式来捕获目标方法,然后在您的方面以编程方式过滤这些方法。

 类似资料:
  • 我在@controllerAdvice中定义了一个@ModelAttribute(键),我在多个控制器方法中使用相同的模型属性作为方法参数,因为(键)在所有控制器中都可用。 我像这样在控制器类中添加属性(key)。 我想截取所有以作为方法参数的控制器方法。 我的方面文件看起来像这样。 但是我的服务器启动失败说 [tomcat:launch]由:java引起。lang.IllegalArgument

  • 我在我的Scala项目中使用带有sbt-aspectj的AeyJ库。我正在尝试使用表达式编写: 但我有以下例外: 以下AspectJ教程介绍: 因此,通过注释样式,可以仅在@pointcut表达式中使用if()切入点。if()不能包含任何正文。然后,带注释的@切入点方法必须是公共静态布尔的形式,并且可以像往常一样使用形式绑定 可以在Scala方法上使用切入点中的if()表达式吗?

  • 怎么了?各位! 我正在尝试拦截所有名称中包含特定单词的类...如下所示: 我有以下拦截方法: 我试过:(有效,但看起来很可怕) 谢谢!!!

  • 问题内容: 我正在尝试通过两种不同的方法在Pandas数据框中选择多个列: 1)通过列号,例如1-3列和6列起。 和 2)通过列名列表,例如: 然后, years_month 将产生以下内容: 也就是说,在两种方法中,仅加载名称在 Years_month 列表中的列的最佳(或正确)方法是什么? 问题答案: 我认为您需要合并列的位置,然后用于选择: 对于第二种方法子集,通过: 样品: 您也可以总结的

  • 问题内容: 这是我的问题:我想检查名称已参数化的表中的行,如。X的值来自另一个表,例如,在我的主表中,我有一列和一列X,要连接的表的名称为table_X,毫无疑问,它存在,并且具有相同的column ,我将其连接,以检查该表中是否有值。 我尝试过一个视图,但是没有成功,因为我无法在视图中放置参数化的表名。我可以参数化where子句和其他东西,但是没有表名。 我已经尝试过一个程序 PREPARE s

  • 到目前为止,我已经尝试了以下表达式,但没有成功: 有人能给我指出正确的解决办法吗?有可能吗?