AOP au printemps a {Advisor, Advice, Pointcut, Joinpoint}
Comme vous le savez, l'objectif principal d'aop est de découpler la logique de préoccupation transversale (Aspect) du code de l'application, pour l'implémenter au printemps, nous utilisons (Advice / Advisor)
Pointcut est utilisé pour filtrer où nous voulons appliquer exactement ce conseil, comme "toutes les méthodes commencent par insérer", donc les autres méthodes seront exclues, c'est pourquoi nous avons dans l'interface Pointcut {ClassFilter et MethodMatcher}
Donc, Advice est la mise en œuvre de la logique transversale et Advisor est le conseil plus le PointCut, si vous n'utilisez que des conseils, le ressort le mappera au conseiller et rendra le pointcut VRAI, ce qui signifie ne rien bloquer. C'est pourquoi lorsque vous n'utilisez que des conseils, il est appliqué à toutes les méthodes de la classe cible car vous ne les avez pas filtrées.
Mais Joinpoint est un emplacement dans le programme, vous pouvez y penser comme une réflexion lorsque vous accédez à l'objet Class, puis vous pouvez obtenir l'objet Method, puis vous pouvez invoquer n'importe quelle méthode de cette classe, et c'est ainsi que fonctionne le compilateur, si vous pensez cela, vous pouvez imaginer le Joinpoint.
Joinpoint peut être avec un champ, un constructeur ou une méthode, mais au printemps, nous avons un point de jointure avec des méthodes uniquement, c'est pourquoi, au printemps, nous avons des types de Joinpoint (Avant, Après, Lancer, Autour), tous faisant référence à des emplacements dans la classe.
Comme je l'ai mentionné, vous pouvez avoir des conseils sans découpage (pas de filtre) puis ils seront appliqués à toutes les méthodes ou vous pouvez avoir un conseiller qui est [conseil + découpage] qui sera appliqué à des méthodes spécifiques mais vous ne pouvez pas avoir de conseils sans point de jointure comme pointcut, vous devez le spécifier, et c'est pourquoi les types de conseils dans spring sont exactement les mêmes types que le point de jointure, donc lorsque vous choisissez un conseil, vous choisissez implicitement quel point de jointure.
Pour conclure, le conseil est la logique d'implémentation de votre aspect à la classe cible, ce conseil doit avoir un point de jonction comme avant l'invocation, après l'invocation, après le lancement ou autour de l'invocation, puis vous pouvez filtrer où exactement vous voulez l'appliquer en utilisant le pointcut to filtrer les méthodes ou pas de pointcut (pas de filtre) pour qu'il soit appliqué à toutes les méthodes de la classe.