Попытка сопоставить сигнатуру AspectJ pointcut для любых методов, содержащих переменную
Я хочу создать pointcut, который соответствует любому методу в моем веб-контроллере, который содержит ModelMap:
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, не добавляя делегат pointcut для каждой возможной комбинации параметров?
1 ответ
Решение
Вы можете использовать подстановочные знаки *
или же ..
выражать аргументы гибко.
pointcut addMenu(ModelMap modelMap) :
execution (public String example.web.MyController.*(..)) && args (*, modelMap);
Смотрите AspectJ: параметр в pointcut