Аспект pointcut для соответствия аннотации - PullRequest
3 голосов
/ 05 декабря 2011

Я пытаюсь использовать Spring AOP с поддержкой AspectJ для создания методов с определенной аннотацией.Я знаю, что это легко сделать с помощью pointcut @annotation (classname)

Но мне нужно создавать ткачей на основе свойств аннотации.Рассматриваемая аннотация - это Spring @RequestMapping, и мне нужно проверить его свойство метода.

Я знаю, что могу получить к нему доступ в теле совета, но я действительно хотел бы создать один советза соответствующую аннотацию.

Возможно ли это?

1 Ответ

1 голос
/ 06 декабря 2011

Там, похоже, не является способом сделать это , но вы можете проверить параметры аннотации сразу при входе и сразу же передать ее, если они не удовлетворены.

@Around("execution(public * *(..)) && @annotation(reqMap)")
public Object myMethod(ProceedingJoinPoint pjp, RequestMapping reqMap)
        throws Throwable {
    if (notRightPropertyValue(reqMap))
        return pjp.proceed();
    // Do your stuff here
}

Если это слишком не элегантно, подумайте о том, чтобы придумать дополнительную аннотацию, чтобы отметить только те методы, которые вам действительно интересны.

...