`
justin8335
  • 浏览: 28906 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

Spring AOP基础

阅读更多

----------Spring之AOP--------------

为其他对象提供一种代理以控制对这个对象的访问。
代理对象可以在客户和目标对象之间起到中介作用,去掉客户不能看到的内容和服务或者
增添客户需要的额外服务。

(1)  切面(Aspect): 一个关注点的模块化,这个关注点可能会横切多个对象。
事务管理是J2EE应用中一个关于横切关注点的很好的例子。 在Spring AOP中,
切面可以使用通用类(基于模式的风格) 或者在普通类中以 @Aspect 注解(@AspectJ风格)来实现。

(2)  连接点(Joinpoint): 在程序执行过程中某个特定的点,比如某方法调用的时候或者处理异常
的时候。 在Spring AOP中,一个连接点 总是 代表一个方法的执行。 通过声明一个
org.aspectj.lang.JoinPoint类型的参数可以使通知(Advice)的主体部分获得连接点信息。


(3) 通知(Advice): 在切面的某个特定的连接点(Joinpoint)上执行的动作。通知有各种类型,
其中包括“around”、“before”和“after”等通知。 通知的类型将在后面部分进行讨论。
许多AOP框架,包括Spring,都是以拦截器做通知模型, 并维护一个以连接点为中心的拦截器链。

补充:增强,在特定连接点上执行的动作,执行这个动作就相当于对原始对象的功能做了增强。


(4) 切入点(Pointcut): 匹配连接点(Joinpoint)的断言。通知和一个切入点表达式关联,
并在满足这个切入点的连接点上运行(例如,当执行某个特定名称的方法时)。
切入点表达式如何和连接点匹配是AOP的核心:Spring缺省使用AspectJ切入点语法。

补充:切入点就是一组连接点的集合。

(5) 引入(Introduction): (也被称为内部类型声明(inter-type declaration))。声明额外的方法
或者某个类型的字段。 Spring允许引入新的接口(以及一个对应的实现)到任何被代理的对象。 例如,你可以
使用一个引入来使bean实现 IsModified 接口,以便简化缓存机制。

补充:为一个已有的对象动态地增加新的接口。

(6) 目标对象(Target Object): 被一个或者多个切面(aspect)所通知(advise)的对象。也有人把它叫做
被通知(advised)对象。既然Spring AOP是通过运行时代理实现的,这个对象永远是一个 被代理(proxied)对象。

(7)  AOP代理(AOP Proxy): AOP框架创建的对象,用来实现切面契约(aspect contract)(包括通知方法执行等功能)。
在Spring中,AOP代理可以是JDK动态代理或者CGLIB代理。  注意:Spring 2.0最新引入的基于模式
(schema-based)风格和@AspectJ注解风格的切面声明,对于使用这些风格的用户来说,代理的创建是透明的。

(8)  织入(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框架,例如Nanning和JBoss4,都只提供环绕通知。


理解SpringAOP我们只要弄清3个对象

目标对象,切面和AOP代理

目标对象就是我们自己编写的去除了重复代码的核心类,切面则是集中了重复代码的模块,
然后在Spring的IOC中容器中以合适的方式装配起来,构成一个AOP代理,交给客户使用。

分享到:
评论

相关推荐

    Spring AOP基础关于AOP是什么的理解

    Spring AOP 基础关于 AOP 是什么的理解 AOP(Aspect Oriented Programming 面向方面的编程)是一种实现横切面的工具,它是 OOP 的补充,而不是 OOP 的竞争对手。AOP 的出现是为了解决 OOP 中的缺陷,即 OOP 中的类...

    第二章:Spring AOP 基础1

    在本章"Spring AOP 基础1"中,我们主要探讨了Spring AOP(面向切面编程)的核心概念和实现方式。AOP是一种编程范式,它允许程序员定义"切面",这些切面封装了跨越多个对象的横切关注点,如日志、事务管理等。以下是...

    SpringSpring Aop基础入门

    Spring Aop基于xml练习

    springAop的配置实现

    Spring AOP 基础概念** - **切面(Aspect)**:切面是关注点的模块化,比如日志、事务管理等,这些关注点可以被定义为一个独立的模块,称为切面。 - **通知(Advice)**:在特定连接点上执行的代码,也就是切面要...

    Spring Aop基础入门

    Spring Aop基于annotation注解练习

    springAOP配置动态代理实现

    一、Spring AOP基础知识 1. **什么是AOP**:AOP是一种编程范式,用于处理系统中的横切关注点,即那些跨越多个类或方法的共同功能,如事务管理、日志记录等。AOP通过切面(Aspect)将这些关注点与业务逻辑分离,提高...

    spring aop 附带测试实例

    ### 一、Spring AOP基础 1. **切面(Aspect)**:切面是关注点的模块化,例如日志、事务等。在Spring AOP中,一个切面通常由一个或多个通知(advises)和一个切点(join point)定义组成。 2. **通知(Advice)**...

    spring aop实例

    **一、Spring AOP基础知识** 1. **切面(Aspect)**:切面是跨越多个对象的行为或关注点的模块化。在Spring AOP中,切面由通知(advises)和切点(pointcuts)定义。 2. **通知(Advice)**:通知是在特定连接点上...

    spring aop实例annotation方法实现

    一、Spring AOP基础 Spring AOP是Spring框架的一部分,它提供了一种在运行时织入横切关注点(如日志、事务管理等)到目标对象的能力。AOP的核心概念包括切面(Aspect)、连接点(Join Point)、通知(Advice)、切入...

    spring AOP 基础

    Spring AOP(面向切面编程)是Spring框架的一个核心组件,它允许开发者在不改变原有代码的情况下,通过预编译和运行期动态代理技术,向程序中动态地添加额外的功能。本教程主要介绍AOP的基本概念,使用代理模式实现...

    Spring AOP完整例子

    首先,我们需要理解Spring AOP的基础概念。AOP的核心是切点(Pointcut),它定义了关注点在何处应用。在Spring中,我们通常使用表达式或者注解来定义切点。例如,我们可以使用`@Before`、`@After`、`@Around`、`@...

    spring aop依赖jar包

    现在,我们回到主题——"springaop依赖的jar包"。在Spring 2.5.6版本中,使用Spring AOP通常需要以下核心jar包: - `spring-aop.jar`:这是Spring AOP的核心库,包含了AOP相关的类和接口。 - `spring-beans.jar`:...

    spring 的AOP 基础

    **Spring AOP基础** 在Java开发中,Spring框架以其强大的功能和灵活性被广泛使用,而Spring AOP(面向切面编程)是其重要组成部分之一。AOP允许开发者将关注点从核心业务逻辑中分离出来,比如日志记录、权限检查等...

    Spring Aop四个依赖的Jar包

    Spring AOP就是基于这些接口进行设计的,因此这个库是Spring AOP和其他AOP实现之间协作的基础。 在实际使用中,我们需要在项目的类路径下包含这些Jar包,并在Spring配置文件中启用AOP支持。例如,可以通过以下XML...

    死磕Spring之AOP篇 - Spring AOP两种代理对象的拦截处理(csdn)————程序.pdf

    了解这些基础知识可以帮助我们更好地掌握 Spring AOP 的实现细节。在分析源码时,可以参考作者的源码注释和相关文章,以便更深入地理解每一步操作。 总的来说,Spring AOP 通过动态代理技术实现了切面的插入,使得...

    Spring AOP面向方面编程原理:AOP概念

    Spring AOP是在Spring框架的基础上实现的一种面向方面编程机制。 1. **方面(Aspect)**:这是AOP的核心概念之一,指代一个关注点的模块化,该关注点可能会横切多个对象。例如事务管理就是一个典型的横切关注点,...

    spring aop 自定义注解保存操作日志到mysql数据库 源码

    3、对spring aop认识模糊的,不清楚如何实现Java 自定义注解的 4、想看spring aop 注解实现记录系统日志并入库等 二、能学到什么 1、收获可用源码 2、能够清楚的知道如何用spring aop实现自定义注解以及注解的逻辑...

    使用Spring配置文件实现AOP

    二、Spring AOP基础 在Spring中,AOP的实现依赖于两个主要组件:通知(Advice)和切点(Pointcut)。通知是实际执行的增强代码,如方法调用前的记录日志;切点是通知应该应用到的方法或类。Spring支持五种类型的的...

    基于注解配置和使用spring AOP(spring mvc框架)

    一、Spring AOP基础知识 1. **切面(Aspect)**:切面是关注点的模块化,例如日志、事务管理等。在Spring AOP中,切面可以是Java类或@Aspect注解的类。 2. **通知(Advice)**:通知是指在特定连接点执行的代码块...

    spring aop hessian 基础demo 部署即可运行

    Spring AOP和Hessian是两个在Java开发中广泛使用的技术,尤其在分布式系统和服务治理中。下面将详细解释这两个概念以及它们如何结合使用。 **Spring AOP(面向切面编程)** Spring AOP是Spring框架的一个重要组成...

Global site tag (gtag.js) - Google Analytics