【问题标题】:Trying to match an AspectJ pointcut signature for any methods containing a variable尝试为包含变量的任何方法匹配 AspectJ 切入点签名
【发布时间】:2010-02-08 16:05:43
【问题描述】:

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

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

【问题讨论】:

    标签: java spring-mvc aspectj pointcuts


    【解决方案1】:

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

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

    AspectJ: parameter in a pointcut

    【讨论】:

    • 谢谢。这接近我想要的,但它会导致切入点不再匹配我的“request(ModelMap modelMap)”方法,因为它需要多个参数。
    • 是的,我的回答中链接的帖子中涉及的问题。尝试使用“..”或创建两个切入点“*、modelMap”和“modelMap”。
    猜你喜欢
    • 1970-01-01
    • 2018-05-08
    • 2014-11-17
    • 1970-01-01
    • 2011-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多