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


问题内容

我想创建一个切入点,该切入点与Web控制器中包含ModelMap的 任何 方法匹配:

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参数匹配,而不必为每种可能的参数组合添加切入点委托?


问题答案:

您可以使用通配符*..以灵活的方式表示参数。

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