Spring AOP (1): Aperçu

1. Première impression d'AOP

Tout d'abord, donnez un terme plus professionnel (de Baidu):

在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方
式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个
热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑
的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高
了开发的效率。

Ensuite, nous donnons un exemple relativement facile à comprendre (de: Spring AOP ):

Pour comprendre la programmation des aspects, vous devez comprendre ce qu'est un aspect. Utilisez un couteau pour diviser une pastèque en deux morceaux, et la coupe correspond aux nouilles; pour la cuisson, la marmite et la cuisinière travaillent ensemble pour terminer la cuisson, et la casserole et la cuisinière sont les nouilles. Dans la conception au niveau du Web, couche Web -> couche passerelle -> couche service -> couche de données, chaque couche est également un aspect. En programmation, entre objet et objet, méthode et méthode, module et module sont tous des aspects.

Lorsque nous faisons généralement des activités, nous vérifions généralement la validité de chaque interface (si elle démarre, si elle se termine, etc.), et si cette interface nécessite la connexion d'un utilisateur.

Selon la logique normale, nous pouvons le faire. 
Écrivez la description de l'image ici

Le problème avec cela est de savoir combien de copies de code sont nécessaires pour le nombre d'interfaces. Pour une "personne paresseuse", c'est intolérable. Ok, venez avec une méthode publique, chaque interface pour appeler cette interface. Ça sent les nouilles en tranches. 
Écrivez la description de l'image ici

Il y a aussi un problème: même si je n'ai pas besoin de copier le code à chaque fois, je dois appeler cette méthode pour chaque interface. Il y a donc le concept d'aspect, j'injecte la méthode à un certain endroit de l'appel d'interface (pointcut).

Écrivez la description de l'image ici

De cette manière, l'interface n'a besoin que de se soucier de l'activité spécifique et n'a pas besoin de se soucier d'une autre logique ou d'un traitement qui n'est pas l'interface. 
La boîte rouge est une programmation orientée aspect.

Deux concepts liés dans AOP

Après avoir vu l'exemple ci-dessus, je pense que tout le monde a une idée approximative de l'AOP en tête, mais il y a des ambiguïtés dans des termes tels que l'aspect mentionné ci-dessus. Ensuite, expliquons l'AOP associé. Concepts Ce n'est qu'en comprenant les concepts d'AOP que vous pouvez vraiment saisir l'essence de l'AOP. 
Voici d'abord une définition de concept plus professionnelle :

  • Aspect(Aspect): La déclaration d'aspect est similaire à la déclaration de classe en Java. Aspect contiendra un pointcut et des conseils correspondants.
  • Joint point(Point de connexion): Représente un point clairement défini dans le programme, comprenant généralement l'invocation de méthode, l'accès aux membres de la classe et l'exécution de blocs de gestionnaire d'exceptions, etc. Il peut également imbriquer d'autres points de jonction.
  • Pointcut(Point de contact): Représente un groupe de points communs, qui sont combinés via des relations logiques, ou rassemblés via des caractères génériques, des expressions régulières, etc. Il définit où les conseils correspondants se produiront.
  • Advice(Amélioration): le conseil définit les Pointcut opérations spécifiques à effectuer aux points de programme définis  . Il utilise avant, après et autour pour distinguer si c'est avant, après ou au lieu d'exécuter du code pour chaque point de jonction.
  • Target(Cible): Advice La cible du tissage  .
  • Weaving(Tissage):  le processus de Aspect connexion avec d'autres objets et de création  Adviced'un objet

Donnez ensuite un exemple facile à comprendre

Après avoir lu la partie théorique des connaissances ci-dessus, je crois que de nombreux amis auront encore le sentiment que le concept d'AOP est encore très vague et que la compréhension de divers concepts en AOP n'est pas très approfondie. En fait, c'est normal, car le concept en AOP est trop et j'étais le patron a également passé du mal à peigner clair. 
maintenant , je prends un exemple simple pour décrire ce que l'AOP  AspectJoint pointPointcut et  Advicela relation entre les deux. 
disons, il y avait une fois un homme nommé Java Dans le petit chef-lieu, par une nuit sombre et venteuse pendant un mois, un meurtre a eu lieu dans ce chef-lieu. Le meurtrier était très rusé, et il ne restait plus d'indices précieux. Heureusement, le vieux Wang qui venait de rentrer d'à côté se trouvait ici. À ce moment-là, j'ai accidentellement découvert le processus du meurtrier, mais comme il était tard et que le meurtrier se couvrait le visage, Lao Wang n'a pas vu clairement le visage du meurtrier. Il savait seulement que le meurtrier était un homme mesurant environ sept pieds cinq pouces. Un comté du comté de Java. Selon la description de Lao Wang, Ling a donné un ordre aux soldats gardant la porte: Tous les hommes qui mesuraient sept pieds et cinq pouces doivent être arrêtés et interrogés. Bien sûr, les soldats n’ont pas osé violer l’ordre du magistrat du comté, ils ont donc dû obliger tous ceux qui entraient et sortaient de la ville à remplir les conditions. Les gens ont été arrêtés.

Pour nous faire regarder à la fin quelle est la correspondance entre la petite histoire ci-dessus et AOP. 
Tout d'abord nous savons, dans Spring AOP  Joint point se référer à ce point d'exécution de toutes les méthodes, et le point cut est une information descriptive, il modifie est  Joint point, par En pointillé, nous pouvons déterminer ce qui  Joint point peut être tissé  Advice. Conformément à l'exemple que nous avons donné ci-dessus, nous pouvons faire une simple analogie, qui  Joint point équivaut aux habitants d'un petit comté de Java , ce qui pointcut équivaut à l'accusation de Lao Wang , Autrement dit, le meurtrier était un homme mesurant environ sept pieds et cinq pouceset  Advice il a été appliqué sur le suspect conformément aux actions décrites par Lao Wang: attrapez-le pour l'interroger
Pourquoi peut-il être comparé ainsi?

  • Joint point : Gens dans un petit comté de Java: Parce que par définition, ce  Joint point sont tous des Advice points candidats qui peuvent être tissés  . Au printemps AOP, tous les points d'exécution de méthode peuvent être pris en compte  Joint point. Et dans notre exemple ci-dessus, le meurtre a eu lieu à Dans un petit comté, il va de soi que tout le monde dans ce comté peut être un suspect.

  • Pointcut : Mâle, environ sept pieds cinq pouces de hauteur: nous savons que toutes les méthodes (points de jonction) peuvent être tissées  Advice, mais nous ne voulons pas tisser dans toutes les méthodes  Advice, mais  Pointcut la fonction est de fournir un ensemble de règles correspondant au point de jonction, Ajoutez le point de jonction qui respecte les règles.De  Advicela même manière, pour le magistrat du comté, aussi faible soit-il, il sait aussi que toutes les personnes du comté ne peuvent pas être arrêtées pour interrogatoire, mais sur la base du meurtrier est un homme, mesurant environ sept pieds et cinq pouces. La personne qui remplit les conditions est arrêtée. Ici, le meurtrier est un homme. La hauteur d'environ sept pieds et cinq pouces est un prédicat modificateur. Cela limite la portée du meurtrier. Les personnes qui satisfont à cette règle de modification sont toutes des suspects et doivent être arrêtées pour interrogatoire.

  • Advice : Saisir et interroger  Advice est une action, c'est-à-dire un morceau de code Java qui agit sur ceux définis par le point cut  Joint point . De même, contrairement à notre exemple, saisir et interroger cette action consiste à affecter ces Rencontrez les hommes, les habitants de la petite ville du comté de Java, mesurant environ sept pieds cinq pouces.

  • Aspect:: C'est  une combinaison Aspect de coupure ponctuelle et  Advice, donc ici, nous pouvons faire une analogie: "Selon les indices de Lao Wang, tous les hommes qui mesurent 7 pieds 5 pouces doivent être attrapés et interrogés." Toute cette action peut être considérée comme une  Aspect.

Enfin, un diagramme décrivant la relation entre ces concepts
Écrivez la description de l'image ici

Trois, un autre contenu

AOPIl Joinpointpeut y avoir de nombreux types dans: appel de constructeur, définition et acquisition de champ, appel de méthode, exécution de méthode, exécution de gestion des exceptions, initialisation de classe. C'est-à-dire que dans AOPle concept de ce qui précède, nous pouvons Joinpointtisser notre coutume sur ce qui précède Advice, mais Springil n'implémente pas tout ce qui précède joinpoint, pour être précis, Springne prend en charge que le type d'exécution de méthode Joinpoint.

Types de conseils

  • before advice, Le conseil qui est exécuté avant le point de jointure. Bien qu'avant que le conseil soit exécuté avant le point de jointure, il ne peut pas empêcher l'exécution du point de jointure sauf si une exception se produit (c'est-à-dire que dans le code de conseil avant, nous ne pouvons pas déterminer artificiellement si Continuez à exécuter le code dans le point de jointure)

  • after return advice, Conseil exécuté après le retour normal d'un point de jointure

  • after throwing advice, Conseil exécuté après qu'un point de jointure lève une exception
  • after(final) adviceIndépendamment du fait qu'un point de jointure se termine normalement ou qu'une exception se produit, le conseil sera exécuté.
  • around advice, Le conseil qui est exécuté avant le point de jonction et après la sortie du point de jonction. Il s'agit du conseil le plus couramment utilisé.
  • introduction, Introduction peut ajouter de nouvelles propriétés et méthodes à l'objet d'origine.

En Spring, il est réalisé grâce à une technologie de proxy dynamique et de bytecode dynamique AOP. Nous expliquerons ces contenus plus tard.

Je suppose que tu aimes

Origine blog.csdn.net/sanmi8276/article/details/108618572
conseillé
Classement