AOP, ou programmation orientée aspect, est une idée importante dans la programmation Java. Par rapport à la programmation orientée objet (POO) traditionnelle basée sur des classes et des objets, l'AOP se concentre davantage sur le comportement et les aspects d'exécution. Cet article présentera l'idée de la programmation AOP en Java.
1. Qu’est-ce que l’AOP ?
AOP est un concept issu de la POO (Programmation Orientée Objet). Il complète la POO et améliore la complexité et la flexibilité du code en séparant les préoccupations fondamentales et les préoccupations horizontales. En termes simples, AOP est une technologie qui permet la réutilisation du code sur plusieurs objets et modules en Java.
2. Comment implémenter AOP
En Java, AOP peut être implémenté des deux manières suivantes :
Dans le développement réel, afin d'atteindre certains objectifs (comme la journalisation), nous avons besoin de Certains opérations supplémentaires avant et après certaines méthodes. À ce stade, nous pouvons écrire manuellement la classe proxy et transmettre la classe cible dans la classe proxy. La classe proxy appellera la méthode dans la classe cible et effectuera des opérations supplémentaires avant et après l'appel. Cette classe proxy est l'aspect d'AOP et réalise la réutilisation du code.
Le schéma du proxy statique est le suivant :
(L'image vient d'Internet)
On peut voir que l'objet proxy et l'objet proxy implémentent la même interface. dans l'objet proxy, et avant et après l'appel. Des opérations supplémentaires ont été effectuées.
Bien que les proxys statiques puissent implémenter AOP, l'écriture manuelle de classes de proxy entraînera beaucoup de redondance et de duplication dans notre code, nous pouvons donc utiliser des proxys dynamiques pour implémenter AOP et réduire la redondance et la duplication de code.
En Java, il existe deux façons d'implémenter un proxy dynamique : le proxy dynamique JDK et le proxy dynamique CGLIB.
Le proxy dynamique JDK nécessite que la classe mandatée implémente une ou plusieurs interfaces. JDK générera une classe proxy dynamique pour implémenter cette interface et implémentera la logique améliorée de l'appel de méthode dans la classe proxy dynamique. Dans le processus de génération de classes proxy, JDK utilise l'API de réflexion, les performances des classes proxy sont donc relativement faibles.
Le proxy dynamique CGLIB peut proxy des classes qui n'implémentent pas d'interfaces. La classe proxy générée par CGLIB est une sous-classe de la classe cible, et la logique du proxy est implémentée en réécrivant les méthodes dans la classe cible. Comparé au proxy dynamique JDK, le proxy dynamique CGLIB a des performances plus élevées.
3. Scénarios d'application AOP
Lors de l'exploitation et de la maintenance du système, l'enregistrement des journaux du système est une opération importante. Nous pouvons utiliser la technologie AOP pour enregistrer les journaux avant et après l'appel de chaque méthode afin de faciliter le dépannage ultérieur.
Lors de l'optimisation des performances, nous devons surveiller les méthodes du système et compter le nombre d'appels de méthode, les informations chronophages et autres. La technologie AOP peut être utilisée pour extraire la logique de surveillance publique et mettre en œuvre la surveillance des appels de méthode.
Lors de la gestion de la sécurité du système, nous devons contrôler les autorisations sur les méthodes du système. La technologie AOP peut être utilisée pour atteindre cet objectif, en décidant d'autoriser ou non l'accès à une certaine méthode en fonction des autorisations de l'utilisateur.
Lors de l'exécution d'opérations sur les données, nous devons garantir la cohérence et l'intégrité des données. Nous pouvons utiliser la technologie AOP pour démarrer une transaction au début de l'exécution de la méthode et valider ou annuler la transaction à la fin. exécution de la méthode.
4. Résumé
AOP est une idée importante dans la programmation Java. Elle améliore la complexité et la flexibilité du code en séparant les préoccupations fondamentales et les préoccupations horizontales. En Java, AOP peut être implémenté de deux manières : proxy statique et proxy dynamique. Les scénarios d'application de la technologie AOP incluent la journalisation, la surveillance des performances, le contrôle de sécurité et la gestion des transactions, etc.
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!