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

发布于 2024-08-20 20:31:01 字数 570 浏览 3 评论 0原文

我想创建一个与包含 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 参数相匹配,而不必为每个可能的参数组合添加切入点委托?

I want to create a pointcut that matches any method in my Web controller that contains a ModelMap:

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

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

My problem is that this only matches methods with ONLY the ModelMap parameter, others are not matched because they contain too many parameters. For example, this is not intercepted, due to the "req" parameter:

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

Is there any way to match all methods with a ModelMap parameter, without having to add a pointcut delegate for every possible parameter combination?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

呆头 2024-08-27 20:31:01

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

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

请参阅 AspectJ:切入点中的参数

You can use wildcards * or .. to express the arguments in a flexible way.

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

See AspectJ: parameter in a pointcut

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文