Есть синтаксические ошибки в обоих pointcut. Вы не можете просто написать сигнатуру метода без execution()
, если хотите перехватить метод. Также, пожалуйста, не забудьте указать тип возвращаемого значения или, по крайней мере, *
для любого возвращаемого типа.
Первый синтаксис будет синтаксически правильным, например:
@Around(
"execution(List<Account> find*(..)) && " +
"execution(* com.xyz.myapp.SystemArchitecture.inDataAccessLayer()) && " +
"args(accountHolderNamePattern)"
)
Но Он все равно не будет соответствовать ни одному методу, поскольку &&
(логическое И) требует, чтобы оба метода выполнялись одновременно, что невозможно. Выполняется либо find*(..)
, либо inDataAccessLayer()
, но не оба одновременно. Вместо этого вы можете работать с ||
(логическое ИЛИ), но тогда сопоставление args()
будет неоднозначным, и, таким образом, точка снова будет недействительной. Я не могу сказать вам, как исправить вашу точку отсчета, если вы не объясните мне, чего вы хотите достичь. Теперь это не имеет никакого смысла.
Что касается второго pointcut, вы можете исправить это так:
@Before("execution(* com.test.bean.TestBean.testMethod())")
Сообщение об ошибке, которое вы процитировали, означает, что парсер AspectJдумает, что вы ссылаетесь на именованный pointcut вместо выполнения предполагаемого метода.