English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Aspect Oriented Programming(AOP) is a supplement to OOP in a sense, as it also provides modular functions. However, the key unit of modularity is aspect rather than class.
AOP divides the program logic into different parts (called points of interest). It is used to Points of interest across fieldsPour améliorer la modularité.
Croiser-Cutting concernsC'est un point d'intérêt qui affecte tout l'application et devrait être concentré dans un seul endroit du code, par exemple la gestion des transactions, l'authentification, la journalisation, la sécurité, etc.
Pourquoi utiliser AOP ?
Il fournit une manière pluggable pour ajouter dynamiquement des points d'intérêt supplémentaires avant, après ou autour de la logique réelle. Supposons qu'un classe ait10Les méthodes, comme suit:
class A{ public void m1(){...} public void m2(){...} public void m3(){...} public void m4(){...} public void m5(){...} public void n1(){...} public void n2(){...} public void p1(){...} public void p2(){...} public void p3(){...} }
Commençant par m5Cette méthode, commençant par n2Cette méthode, commençant par p3Cette méthode.
Comprendre la situationJe dois maintenir les journaux et envoyer
Problèmes sans AOPNous pouvons appeler des méthodes commençant par m (maintenance des journaux et envoi de notifications). Dans ce cas, nous devons utiliser tous5Cette méthode écrit le code.
Mais si le client dit plus tard qu'il n'a pas besoin d'envoyer de notifications, il faut modifier toutes les méthodes. Cela entraînera des problèmes de maintenance.
Solution AOPNous n'avons pas besoin d'appeler une méthode à partir d'une méthode. Maintenant, nous pouvons définir d'autres points d'intérêt dans les méthodes d'une classe, par exemple la maintenance des journaux, l'envoi de notifications, etc. Les entrées sont données dans le fichier xml.
À l'avenir, si le client dit qu'il veut supprimer la fonction de notification, nous n'avons besoin de faire que des modifications dans le fichier xml. Par conséquent, la maintenance en AOP est facile.
AOP est principalement utilisé dans les cas suivants:
Il fournit des services d'entreprise déclaratifs, tels que la gestion des transactions déclaratives. Il permet aux utilisateurs d'implémenter des aspects personnalisés.
Les concepts et termes de AOP sont les suivants:
Point de coupe Conseil Pointcut 引入 对象目标 方面 拦截器 Proxy AOP Weaving
Un point de coupe est n'importe quel point dans le programme, par exemple l'exécution d'une méthode, la gestion des exceptions, l'accès aux champs, etc. Spring ne prend en charge que les points de coupe d'exécution des méthodes.
Le conseil représente les opérations prises par l'aspect à un point de coupe spécifique. Il existe différents types de conseils:
Conseil avant (Before Advice): Il s'exécute avant le point de coupe. Conseil après le retour (After Returning Advice): Il s'exécute après que le point de coupe soit terminé normalement. Conseil après l'exception (After Throwing Advice): S'il quitte la méthode en raison d'une exception, il s'exécute. Conseil après (finally) (After (finally) Advice): Il s'exécute après le point de coupe, que le point de coupe sorte normalement ou en cas d'exception. Conseil autour (Around Advice): Il s'exécute avant et après le point de coupe.
C'est une langue d'expression AOP, qui correspond aux points de coupe.
这意味着引入类型的其他方法和字段。它允许您向任何建议对象引入新的接口。
这是一个或多个方面建议的对象。在Spring中,它也被称为代理对象,因为Spring AOP是使用运行时代理实现的。
这是一个包含建议,连接点等的类。
这是一个仅包含一个建议的方面。
它用于实现由AOP框架创建的方面合同。在Spring框架中它将是JDK动态代理或CGLIB代理。
这是将方面与其他应用程序类型或对象链接在一起以创建建议对象的过程。编织可以在编译时,加载时或运行时完成。Spring AOP在运行时执行编织。
实现由以下提供:
AspectJ AOP Spring AOP JBoss
Spring AOP可以使用以下三种方式。但是广泛使用的方法是Spring AspectJ注释样式。下面给出了使用Spring AOP的3种方法:
采用Spring1.2样式旧(基于dtd)(在Spring3也受支持) 通过注释样式AspectJ 通过配置样式XML(基于模式)