2011-12-05 1 views
3

J'essaie d'utiliser Spring AOP avec le support AspectJ pour tisser des méthodes avec une certaine annotation. Je sais qu'il est facile de le faire en utilisant un pointage @annotation (nom de classe)Point de coupe d'aspect pour faire correspondre la propriété d'annotation

Mais j'ai besoin de créer des tisserands basés sur les propriétés de l'annotation. L'annotation en question est @RequestMapping de Spring, et j'ai besoin de vérifier la propriété de la méthode.

Je sais que je pourrais y accéder dans le corps du conseil, mais ce que j'aimerais vraiment, c'est créer un conseil par annotation correspondante.

Est-ce possible?

Répondre

1

Il existe doesn't seem to be a way to do it, mais vous pouvez vérifier les paramètres de l'annotation immédiatement à l'entrée et la transmettre immédiatement s'ils ne sont pas satisfaits.

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

Si cela est trop inélégant, envisager d'inventer une annotation supplémentaire pour marquer seulement les méthodes que vous êtes vraiment intéressé.

Questions connexes