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

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

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

我的问题是,这仅匹配具有 的方法,仅匹配 的 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/

10-12 20:35