AOP的基本概念
•
切面(Aspect): 一个关注点的模块化,这个关注点可能会横切多个对象。事务管理是J2EE应用中一个关于横切关注点的很好的例子。 在Spring AOP中,切面可以使用通用类(基于模式的风格) 或者在普通类中以 @Aspect 注解(@AspectJ风格)来实现。
•
连接点(Joinpoint): 在程序执行过程中某个特定的点,比如某方法调用的时候或者处理异常的时候。 在Spring AOP中,一个连接点 总是 代表一个方法的执行。 通过声明一个org.aspectj.lang.JoinPoint类型的参数可以使通知(Advice)的主体部分获得连接点信息。
•
通知(Advice): 在切面的某个特定的连接点(Joinpoint)上执行的动作。通知有各种类型,其中包括“around”、“before”和“after”等通知。 通知的类型将在后面部分进行讨论。许多AOP框架,包括Spring,都是以拦截器做通知模型, 并维护一个以连接点为中心的拦截器链。
•
切入点(Pointcut): 匹配连接点(Joinpoint)的断言。通知和一个切入点表达式关联,并在满足这个切入点的连接点上运行(例如,当执行某个特定名称的方法时)。 切入点表达式如何和连接点匹配是AOP的核心:Spring缺省使用AspectJ切入点语法。
•
引入(Introduction): (也被称为内部类型声明(inter-type declaration))。声明额外的方法或者某个类型的字段。 Spring允许引入新的接口(以及一个对应的实现)到任何被代理的对象。 例如,你可以使用一个引入来使bean实现 IsModified 接口,以便简化缓存机制。
•
目标对象(Target Object): 被一个或者多个切面(aspect)所通知(advise)的对象。也有人把它叫做 被通知(advised) 对象。 既然Spring AOP是通过运行时代理实现的,这个对象永远是一个 被代理(proxied) 对象。
•
AOP代理(AOP Proxy): AOP框架创建的对象,用来实现切面契约(aspect contract)(包括通知方法执行等功能)。 在Spring中,AOP代理可以是JDK动态代理或者CGLIB代理。 注意:Spring 2.0最新引入的基于模式(schema-based)风格和@AspectJ注解风格的切面声明,对于使用这些风格的用户来说,代理的创建是透明的。
•
织入(Weaving): 把切面(aspect)连接到其它的应用程序类型或者对象上,并创建一个被通知(advised)的对象。 这些可以在编译时(例如使用AspectJ编译器),类加载时和运行时完成。 Spring和其他纯Java AOP框架一样,在运行时完成织入。
通知的类型:
•
前置通知(Before advice): 在某连接点(join point)之前执行的通知,但这个通知不能阻止连接点前的执行(除非它抛出一个异常)。
• 返回后通知(After returning advice): 在某连接点(join point)正常完成后执行的通知:例如,一个方法没有抛出任何异常,正常返回。
•
抛出异常后通知(After throwing advice): 在方法抛出异常退出时执行的通知。
•
后通知(After (finally) advice): 当某连接点退出的时候执行的通知(不论是正常返回还是异常退出)。
•
环绕通知(Around Advice): 包围一个连接点(join point)的通知,如方法调用。这是最强大的一种通知类型。 环绕通知可以在方法调用前后完成自定义的行为。它也会选择是否继续执行连接点或直接返回它们自己的返回值或抛出异常来结束执行。
分享到:
相关推荐
#### 二、AOP基本概念 AOP是一种编程范式,其目的是提高模块化程度,特别是将那些对很多类都具有影响的公共行为封装起来,以便减少系统的耦合度,并且增加可重用性。Spring AOP是在Spring框架的基础上实现的一种面向...
本教程介绍 AOP 及其基本概念。AOP 及其相关的工具使您可以将基本横切关注点(如日志记录和安全)的代码,与程序的核心应用逻辑相分离。AOP 通过使代码更具有可读性、更不容易出错以及更容易设计和维护,改善了代码...
首先,我们需要了解 AOP 的基本概念,包括关注点、核心关注点、横切关注点、方面、连接点、切入点、增强、引介、混入继承和织入等。然后,我们将介绍 Spring AOP 框架所涉及到的核心组件列表,包括 Advisor、Advice...
1. aop.doc - 这可能是关于AOP的一份文档,可能包含了AOP的基本概念、核心概念(如切面、通知、连接点等)、实现机制和优势。 2. Aspect-Oriented Programming in Java.mht - 这个文件名表明它是一个关于Java语言中...
首先,我们需要了解AOP的基本概念。AOP的核心是切面(Aspect),它封装了跨越多个对象的行为或关注点,如日志记录。切点(Pointcut)定义了在何处应用切面,通常通过方法签名或注解来指定。通知(Advice)是切面实际...
本项目实现了Spring AOP的基本概念和操作,以下是对相关知识点的详细说明: 一、AOP核心概念 1. 切面(Aspect):切面是关注点的模块化,它封装了横切关注点,如日志、事务管理等。 2. 连接点(Join Point):程序...
1. AOP基本概念的介绍,包括上述核心概念的详细解释。 2. Spring AOP的配置方式,包括XML配置和基于注解的配置。 3. 如何定义切入点表达式,例如使用`execution()`、`within()`、`args()`等函数来匹配连接点。 4. ...
#### 二、AOP 的基本概念 1. **切面(Aspect)** - **定义**:切面是由通知(Advice)和切点(Pointcut)组成的集合,它们共同定义了切面的功能和执行时机。 - **工作内容**:主要包括定位到连接点(Joinpoint)...
`SpringAop.ppt`文件很可能包含了一个详细的讲解,涵盖了Spring AOP的基本概念、配置方式、使用注解声明切面、基于XML的配置以及如何自定义切面。PPT通常会通过图表、代码示例和流程图来帮助理解复杂的概念,使得...
在理解该电子书涉及的知识点之前,我们需要先了解Spring AOP的基本概念和组件。 首先,Spring AOP的核心概念包括: 1. 通知(Advice):这是AOP术语中最核心的概念。通知定义了切面应用到目标对象时所要执行的行为...
首先,我们要理解AOP的核心概念。AOP是一种编程范式,它允许开发者定义“切面”(Aspects),这些切面封装了特定的关注点,如日志、性能监控等。在运行时,这些关注点被编织到应用程序的主业务逻辑中,使得代码更...
1. AOP的基本概念: - 切面(Aspect):AOP的核心单元,包含了横切关注点的定义,可以理解为一个模块化的功能集合。 - 连接点(Join Point):程序执行过程中能够插入切面的特定点,通常是一个方法调用。 - 切入...
一、AOP的基本概念 AOP的核心是切面(Aspect),它封装了横切关注点,如日志记录、事务管理等。在Spring AOP中,切面由通知(Advice)、连接点(Join Point)、切点(Pointcut)、引入(Introduction)和织入...
首先,了解AOP的基本概念是非常必要的。AOP是一种编程范式,它允许我们把关注点(如日志、安全性等)从业务逻辑中分离出来,形成独立的模块,这些模块被称为切面。在Spring AOP中,切面通常由一个或多个通知...
### 二、Spring AOP的基本概念 1. **切面(Aspect)**:切面是封装了横切关注点的模块,它包含通知(advice)和切入点(pointcut)。 2. **通知(Advice)**:在特定的连接点(Join Point)执行的代码,如方法调用...
1. aopalliance.jar:这是一个小型库,定义了面向切面编程的基本接口。它被许多AOP框架使用,包括Spring,使得不同的AOP实现可以互相协作。它包含如`org.aopalliance.intercept.MethodInterceptor`和`org.aop...
通过这个例子,我们可以学习到Spring AOP的基本概念和用法,以及如何在实际开发中利用它来增强代码的灵活性和可维护性。同时,了解动态代理机制有助于我们理解Spring AOP的工作原理。在实际项目中,Spring AOP不仅...
这个简单例子将帮助我们理解AOP的基本概念和如何在Spring框架中实现它。 首先,我们要知道AOP的核心概念:切面、通知、连接点、切点、目标对象和代理。切面是包含横切关注点(如日志记录、事务管理等)的模块化组件...
Spring AOP,全称Aspect-Oriented Programming,是...无论是新手还是经验丰富的开发者,都可以从中学习到Spring AOP的基本概念和实践技巧。通过实际操作和分析`testaop`中的代码,你将更好地掌握面向切面编程的精髓。
首先,我们需要了解AOP的基本概念。AOP的核心思想是将那些影响多个类的公共行为(如日志记录)抽取出来,形成独立的模块,称为切面(Aspect)。切面可以包含通知(Advice),即在特定连接点(Join Point)执行的代码...