java - 尝试为包含变量的任何方法匹配 AspectJ 切入点签名

标签 java spring-mvc aspectj pointcuts

我想在包含 ModelMap 的 Web Controller 中创建一个匹配任何方法的切入点:

pointcut addMenu(ModelMap modelMap) : 
    execution (public String example.web.MyController.*(..)) && args (modelMap);

before(ModelMap modelMap) : addMenu(modelMap) {
    // Do stuff with modelMap...
}

我的问题是,这只匹配具有ONLY ModelMap 参数的方法,其他方法不匹配,因为它们包含太多参数。例如,由于“req”参数,这没有被拦截:

public String request(HttpServletRequest req, ModelMap modelMap) {
    // Handle request
}

有什么方法可以将所有方法与 ModelMap 参数匹配,而不必为每个可能的参数组合添加切入点委托(delegate)?

最佳答案

您可以使用通配符*.. 来灵活地表达参数。

pointcut addMenu(ModelMap modelMap) : 
    execution (public String example.web.MyController.*(..)) && args (*, modelMap);

参见 AspectJ: parameter in a pointcut

关于java - 尝试为包含变量的任何方法匹配 AspectJ 切入点签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2222911/

相关文章:

java - 无法在 Gradle 中重新排序 AspectJ 任务

java - 如何使 Loadtime-AspectJ 在小程序中工作

java - 如何从Spring Controller 中的webapp文件夹访问静态文件?

java - 我的 @Around 建议不会被包中的所有方法调用

java - 在 Android 中以编程方式将 TextView 置于 ConstraintLayout 中心 (java)

java - 对多态性的使用有疑问,也对多态性如何与类型转换相关?

eclipse - 将 spring mvc web 应用程序部署到 tomcat : classpath issue

java - 自定义过滤器中修改后的 HttpServletResponse 被截断为原始响应长度

java - ArrayList 与 HashSet 中的 removeAll()

java - Java 中 LTRIM 和 RTRIM 的一个好的替代方案是什么?