首页 > 解决方案 > 双点“..”语法在 AspectJ 中是如何工作的?

问题描述

我需要让这个 aop 方面发挥作用,但我总是得到错误 404,我需要知道控制器是否正确后这个点是否正确。了解这些点是如何工作的,以访问控制器。

如果可以解释这些点是如何工作的。

<aop:aspect ref="permissionInterceptor">
  <aop:around
    method="invoke"
    pointcut="execution(* com.teste1.teste2.web.controller..*())
      and @annotation(com.teste1.ae.client.security.Permission)"
  />
</aop:aspect>

这个对吗?

标签: javaspringaopaspectj

解决方案


execution(* com.teste1.teste2.web.controller..*())

将意味着 - 执行com.teste1.teste2.web.controller包或其子包之一中定义的任何方法

..是一个特殊的通配符,表示可以匹配任意数量的参数。在执行切入点的上下文中,它将是当前包或它的任何子包。

Spring 文档参考:示例

而 (..) 匹配任意数量(零个或多个)参数。

with 的表达..会起作用。and @annotation(com.teste1.ae.client.security.Permission)您可以验证从表达式中删除部件时是否建议控制器方法。如果请求仍然导致 404 ,请分享MCVE或 Aspect 代码以进一步了解逻辑。


推荐阅读