183 votes

Spring AOP vs AspectJ

J’ai l’impression que printemps-AOP est préférable d’utiliser pour les tâches spécifiques de l’application tels que la sécurité, exploitation forestière, transactions, etc. car il utilise les annotations Java5 personnalisées en tant que cadre. Cependant, AspectJ semble être plus de modèles de conception conviviale sage.

Peut n’importe qui mettre en évidence les divers avantages et inconvénients de l’utilisation de printemps-AOP vs AspectJ dans une application de printemps ??

251voto

Whiteship Points 509

Spring-AOP Pros

  • Il est plus simple à utiliser que AspectJ, puisque vous n'avez pas à utiliser LTW (temps de charge de tissage) ou le compilateur AspectJ.
  • Ce peut être le changement d'AspectJ AOP lorsque vous utilisez @Aspect d'annotation basé sur Spring AOP.
  • Cette utilisation modèle de Proxy et Décorateur modèle

Spring-AOP Cons

  • C'est proxy AOP, donc, fondamentalement, vous ne pouvez utiliser la méthode d'exécution coupe transverse (pointcut).
  • Les Aspects ne sont pas appliqués lors de l'appel à une autre méthode de la même classe.
  • Il peut y avoir un peu de gestion d'exécution.
  • Spring-AOP ne peut pas ajouter un aspect de tout ce qui n'est pas créé par l'usine de ressorts

AspectJ Pros

  • Cela prend en charge tous les pointcuts. Cela signifie que vous ne pouvez rien faire.
  • Il y a peu de gestion d'exécution.

AspectJ Cons

  • Être prudent. Vérifiez si vos aspects sont tissés à seulement ce que vous avez voulu être tissé.
  • Vous avez besoin d'un processus de construction avec le Compilateur AspectJ ou les paramètres LTW (temps de charge de tissage)

22voto

Joseph Lust Points 4961

Une note complémentaire : si la performance sous forte charge est importante, vous aurez envie AspectJ qui est 9-35 x plus rapide que Spring AOP. 355ns vs 10nS pourrait ne pas sembler beaucoup, mais j’ai vu des gens en utilisant beaucoup d’Aspects. Valeur de 10K d’aspects. Dans ces cas, votre demande pourrait frapper un milliers d’aspects. Dans ce cas vous ajoutez ms à cette demande.

Voir les points de repère.

21voto

techzen Points 1165

En dehors de ce que les autres ont dit, juste pour dire les choses autrement, il y a deux différences majeures. L'un est lié au type de tissage et d'une autre à la jonction de la définition.

Spring-AOP : le temps d'Exécution de tissage par l'intermédiaire de proxy à l'aide du concept de dynamique procuration si l'interface existe ou cglib bibliothèque si la mise en œuvre directe fournie.

AspectJ: moment de la Compilation, le tissage à travers AspectJ Java Outils(compilateur ajc) si la source de la disposition ou de post-compilation de tissage (à l'aide des fichiers compilés).Aussi, le temps de chargement de la à tisser avec le Printemps peut être activée - il besoin de la aspectj fichier de définition et offre de la souplesse.

Moment de la compilation, le tissage peut offrir des avantages de performance (dans certains cas) et aussi de la jonction de la définition dans Spring -aop est limitée à la méthode, seule la définition de ce qui n'est pas le cas pour AspectJ.

18voto

elhoim Points 2254

Le printemps manuel de l'utilisateur donnera beaucoup d'informations, directement de la bouche des chevaux.

Le chapitre 6.4 - Choix des AOP déclaration de style à utiliser est mort pour vous, car il examine les avantages et les inconvénients des deux.

Le paragraphe 6.1.2 - Spring AOP Presses et les objectifs et les chapitres 6.2 - @Aspect de soutien et de 6,8 - à l'Aide d'AspectJ avec les applications de Printemps devrait être particulièrement intéressant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X