Spring AOP实现原理

Spring AOP是基于AOP编程模式的轻量级框架,用于实现面向切面编程。它通过动态代理技术在运行时植入增强代码,提供了包括事务处理、日志管理和权限控制等应用场景。Spring AOP支持JDK动态代理和CGLIB动态代理两种方式,同时也可以与AspectJ集成。代理模式是实现AOP的基础,分为静态代理和动态代理。Spring AOP中的核心概念包括切面、连接点、通知、切入点和目标对象等。
摘要由CSDN通过智能技术生成

Spring:

开源框架,2003年兴起的轻量级框架。

核心概念:1.控制反转(IOC)

                  2.面向切面(AOP)

优点:1.方便解耦

2.AOP编程支持

3.声明式事务

4.方便程序测试

5.方便集成各种优秀的其他框架


Spring   AOP:

什么是AOP?

AOP,即面向切面编程,和OOP(面向对象编程)类似,也是一种编程思想。

AOP作用:

      AOP采用横向抽取机制(动态代理),取代传统纵向继承机制的重复性代码,其应用主要体现在事务处理、日志管理、权限控制和异常处理等方面。主要作用是分离功能性需求和非功能性需求,使开发人员可以集中处理某一个关注点或者横切面逻辑,减少对业务代码的侵入,增强代码的可读性和可维护性。

     简单来说,AOP的作用就是保护开发者在不修改源代码的前提下,为系统中的业务组件添加某种统一功能。AOP就是代理模式的典型应用。

最流行的两种AOP框架:Spring AOP,AspectT

  •  Spring AOP(动态代理的代表):是基于AOP编程模式的一个框架,使用纯Java实现,不需要专门的编译过程和类加载器,在运行期间通过代理方式向目标类只植入增强的代码。有两种实现方式:基于接口的JDK动态代理和基于继承的CGLIB动态代理。
  • AspectJ(静态代理的代表):基于Java语言的AOP框架,从Spring2.0开始,Spring AOP引入了对AspectJ的支持。AspectJ扩展了Java语言,提供了一个专门的编译器,在编译时提供横向代码的植入。

代理模式:是程序设计的一种

     代理模式就是为其他对象提供一种代理以控制这个对象的访问,在某些情况下每一个对象不适合或不能直接引用另一个对象,而代理对象可以在客户端与目标对象中间起到中介的作用。

代理模式分为两种:

1.静态代理

     由我们创建或者工具类生成代理,在编译代理类,所谓静态代理就是在程序运行之前就已经存在的代理类,代理类和委托类都关系在运行之前就已经存在。

2.动态代理

    是在实现阶段不关心代理类而是在运行阶段才指定那一个对象。这就意味着不要关心代理类是如何实现的(不需要写在代理类)

代理类中没有真实的实现接口,而是调用了目标类的方法。

Spring AOP图:

切面(Aspect) :官方的抽象定义为“一个关注点的模块化,这个关注点可能会横切多个对象”。
连接点(Joinpoint) :程序执行过程中的某一行为。
通知(Advice) :“切面”对于某个“连接点”所产生的动作。
切入点(Pointcut) :匹配连接点的断言,在AOP中通知和一个切入点表达式关联。
目标对象(Target Object) :被一个或者多个切面所通知的对象。
AOP代理(AOP Proxy: 在Spring AOP中有两种代理方式,JDK动态代理和CGLIB代理。

通知/增强(Advice):

前置通知(Before advice):

 @Before

 在某连接点之前执行的通知,但这个通知不能阻止了连接点之前的执行流程(除非它抛出一个异常)。

后置通知(After returning advice):

@After

在某连接点正常完成后执行的通知,例如,一个方法么有抛出任何异常,正常返回。

异常通知(After throwing advice):

@After-returning

在方法抛出异常退出时执行的通知。

最终通知(After(finally)advice):

@After-throwing

当某连接点退出的时候执行的通知(不论是正常退出还是异常退出);

环绕通知(Around advice):

@Around

包围一个连接点的通知,如方法调用,这是最强大的一种通知类型。

代码实现:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值