Maison > Java > JavaBase > Explication détaillée des principes Spring IoC et AOP

Explication détaillée des principes Spring IoC et AOP

Guanhui
Libérer: 2020-06-23 09:23:17
original
7625 Les gens l'ont consulté

Explication détaillée des principes Spring IoC et AOP

Explication détaillée des principes SpringIOC et AOP

IoC (Inversion of Control)

( 1) .IoC (Inversion of Control) fait référence à la relation entre les objets de programme contrôlés par le conteneur, plutôt que d'être directement contrôlés par le code du programme dans les implémentations traditionnelles. Le contrôle est transféré du code de l'application vers le conteneur externe. Le transfert de contrôle est appelé inversion. Pour Spring, Spring contrôle le cycle de vie des objets et la relation entre les objets ; IoC a un autre nom : « Injection de dépendances ». Comme son nom l'indique, ce qu'on appelle l'injection de dépendances signifie que les dépendances entre les composants sont déterminées par le conteneur pendant l'exécution, c'est-à-dire que le conteneur injecte dynamiquement certaines dépendances dans les composants.

(2). De la manière dont Spring fonctionne, tous les cours seront enregistrés dans le conteneur Spring, indiquant à Spring de quoi il s'agit et ce dont vous avez besoin, puis Spring l'exécutera lorsque le système le conviendra. donne-toi ce que tu veux, et donne-toi également d'autres choses qui ont besoin de toi. La création et la destruction de toutes les classes sont contrôlées par spring, ce qui signifie que le cycle de vie de l'objet n'est plus contrôlé par l'objet qui le référence, mais par spring. Pour un objet spécifique, il contrôlait d'autres objets, mais maintenant tous les objets sont contrôlés par Spring, c'est ce qu'on appelle l'inversion de contrôle.

(3). Pendant le fonctionnement du système, fournissez dynamiquement à un objet les autres objets dont il a besoin.

(4). L'idée de l'injection de dépendances est réalisée grâce au mécanisme de réflexion. Lors de l'instanciation d'une classe, elle appelle la méthode set dans la classe par réflexion pour injecter les attributs de classe précédemment enregistrés dans le HashMap. la classe. Dans l'ensemble, dans la méthode traditionnelle de création d'objets, l'appelant crée généralement une instance de l'appelé. Au Spring, le travail de création de l'appelé est terminé par Spring, puis l'appelant est injecté, ce qu'on appelle la dépendance. changement d'injection ou de réflexion de contrôle. Il existe deux méthodes d'injection : l'injection de dépendances et l'injection de paramètres ; Les avantages de l'IoC : réduire le couplage entre les composants, réduire la complexité du remplacement entre les objets métier et permettre une gestion flexible des objets.

AOP (Aspect Oriented Programming)

(1) La programmation orientée aspect AOP est basée sur IoC et est un complément utile à la POO

(2 ). AOP utilise une technologie appelée "transversale" pour disséquer l'intérieur de l'objet encapsulé et encapsuler les comportements publics qui affectent plusieurs classes dans un module réutilisable et le nommer "Aspect". Le soi-disant « aspect », en termes simples, consiste à encapsuler la logique ou les responsabilités qui n'ont rien à voir avec l'entreprise mais qui sont appelées conjointement par les modules métier, comme la journalisation, afin de réduire la duplication de code dans le système. , réduisent le couplage entre les modules et sont propices à l'opérabilité et à la maintenabilité futures.

(3). L'AOP représente une relation horizontale, comparant "l'objet" à un cylindre creux, qui encapsule les propriétés et le comportement de l'objet. La méthode de programmation orientée aspect consiste à découper ce cylindre en sections ; pour fournir de manière sélective une logique métier. Et les sections coupées sont ce qu'on appelle les « aspects ». Ensuite, il a restauré ces sections coupées avec des compétences étranges, ne laissant aucune trace mais complétant l'effet.

(4).La technologie pour implémenter l'AOP est principalement divisée en deux catégories : l'une consiste à utiliser la technologie de proxy dynamique pour décorer le message en interceptant le message pour remplacer l'exécution du comportement de l'objet d'origine ; utiliser le tissage statique pour introduire une syntaxe spécifique afin de créer des "aspects", afin que le compilateur puisse intégrer du code lié aux "aspects" lors de la compilation.

(5). Spring implémente AOP : proxy dynamique JDK et proxy CGLIB Proxy dynamique JDK : son objet proxy doit être l'implémentation d'une certaine interface, ce qui est accompli en créant une classe d'implémentation de l'interface pendant l'exécution. proxy de l'objet cible ; ses deux classes principales sont InvocationHandler et Proxy. Proxy CGLIB : le principe d'implémentation est similaire au proxy dynamique JDK, sauf que l'objet proxy qu'il génère lors de l'exécution est une sous-classe étendue pour la classe cible. CGLIB est un package de génération de code efficace. La couche inférieure s'appuie sur ASM (bibliothèque de classes d'édition de bytecode Java open source) pour faire fonctionner le bytecode. Ses performances sont meilleures que celles des packages asm.jar et cglib.jar qui doivent être introduits. L'utilisation des aspects injectés par AspectJ et des aspects basés sur les annotations @AspectJ est en fait implémentée via des proxys dynamiques au niveau inférieur.

(6). Scénarios d'utilisation d'AOP :

  • Vérification des autorisations d'authentification

  • Mise en cache

  • Transmission de contexte Passage de contenu

  • Gestion des erreurs Gestion des erreurs

  • Chargement paresseux

  • Débogage 

  • journalisation, traçage, profilage et surveillance Vérifier

  • Persistance                

  • Regroupement de ressources  Pool de ressources     

  • Synchronisation  

  • Transactions Transaction Gestion

De plus, la mise en œuvre de Filter et la mise en œuvre de l'intercepteur struts2 sont toutes deux des manifestations des idées AOP.

Tutoriel recommandé : "

Tutoriel Java"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal