2010-12-09 18 views
1

J'utilise Spring 3.0.5, et je me demandais si c'était possible, d'exclure d'une manière ou d'une autre les classes d'aspects d'être chargées qui ont été annotées avec le stéréotype @Aspect, mais en même temps, inclure d'autres classes annotées. Il semble que ce soit un tout ou rien si vous allez la route d'annotation (que je suis) j'ai essayé de regarder le et mais ne peux pas trouver quelque chose qui suggère cela.Spring AOP - exclure des aspects spécifiques?

La raison en est que j'ai une bibliothèque centrale qui contient des aspects, mais je ne souhaite pas inclure ces aspects dans tous les projets que je crée en utilisant cette bibliothèque centrale.

Merci.

Répondre

1

C'est depuis longtemps une réponse ...

Si vous utilisez des annotations AspectJ avec Spring AOP d'exécution et non AspectJ ou la compilation de tissage alors vous avez de la chance. Spring ne prendra en compte que les classes annotées @Aspect si elles sont également annotées avec quelque chose comme @Component. Spring ne considère pas @Aspect comme candidat pour l'analyse des composants. Si vous utilisez la configuration XML, supprimez simplement ce bean de votre configuration.

Je suggère de ne pas utiliser le balayage des composants qui toucherait une bibliothèque de base. Par exemple, si votre application est com.example.myapp1 et que votre bibliothèque principale est com.example.corelibrary. * Assurez-vous que l'analyse de votre composant est basée sur com.example.myapp1 UNIQUEMENT et non sur com.example.

C'est et non de scanner en toute sécurité à l'extérieur de l'emballage de base de votre application pour cette raison exacte. Tirez dans les aspects individuels avec une config XML pour le bean.