Как написать Aspect pointcut на основе аннотированного параметра

У меня возникли некоторые проблемы при разработке способа создания pointcut, который будет работать с bean-компонентами, имеющими определенный аннотированный параметр. Моя конечная цель - проверить значение параметра до его обработки, но на данный момент мне просто нужно создать pointcut.

Рассмотрим следующую аннотацию

@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.PARAMETER })
public @interface MyAnnotation {}

Затем я хотел бы применить это к ряду методов, таких как:

public void method1(@MyAnnotation long i) {}
public void method2(String someThing, @MyAnnotation long i) {}
public void method3(String someThing, @MyAnnotation long i, byte value) {}

Так

Мне все равно, какой класс (или пакет) методы вПоложение аннотированного аргумента будет различным.Я знаю, что аннотированное значение будет применяться только к определенному типу

Моя реализация pointcut должна бытьчто-то вдоль линий:

@Before(value = "* *(..) && args(verifyMe)")
public void verifyInvestigationId(long verifyMe) {}

Я немного запутался в том, что именно@Before Значение должно быть и как связать аннотацию и ее тип. На данный момент, вероятно, не стоит перечислять то, что я пробовал!

Обновить: На основе рекомендаций, которые я видел в http://stackoverflow.com/questions/3565718/pointcut-matching-methods-with-annotated-parameters/3567170#3567170 (и исправление нескольких недоразумений и добавление места, которое я пропустил) Я дошел до того, что работает следующее:

@Before("execution(public * *(.., @full.path.to.MyAnnotation (*), ..))")
public void beforeMethod(JoinPoint joinPoint) {
    System.out.println("At least one of the parameters are annotated with @MyAnnotation");
}

Это почти то, что мне нужно - все, что мне нужно сделать, это передать значение аннотированного аргумента в качестве параметра методу. Я не могу понять синтаксис, чтобы заставить Spring сделать это (связанный ответ не показывает это).

Ответы на вопрос(1)

Ваш ответ на вопрос