spring-对AOP的理解

AOP面向切面编程

  • AOP (Aspect Orient Programming) 面向切面编程是从动态角度考虑程序的运行过程
  • AOP底层,就是采用动态代理模式实现的,采用了两种代理,JDK的动态代理和CGLib的动态代理
  • 实际上AOP就是动态代理的一种规范化,因为动态代理种类繁多,掌握较难,所以就规范了一套统一的方式,这就是AOP
  • AOP把动态代理的实现步骤,方式都定义好了,让开发人员用一种统一的方式,去用动态代理。

动态代理实现方式(两种)

JDK:

  • JDK动态代理,要求jdk中有Proxy,Method,InvocationHandler创建代理对象
  • JDK动态代理要求目标类必须实现接口

CGLib

  1. 第三方的工具库,创建代理对象,原理是继承,通过继承目标类创建子类,子类就是代理对象
  2. CGLib要求目标类不能是final的 方法也不能是final的

动态代理的作用

  1. 可以在目标类源代码不改变的情况下去增加功能
  2. 减少重复代码
  3. 专注业务逻辑代码
  4. 解耦合,让你的业务功能和日志,事务非业务功能分离
对AOP面向切面编程的理解
  • AOP Aspect:切面 给你目标类增加的功能就是切面,就比如要添加的日志 他就属于切面
  • 切面的特点:一般都是非业务方法,可以独立使用
  • AOP Orient:面向
  • AOP Programming:编程
    1. 需要在分析项目功能时,找出切面。(并不是所有功能都能当切面)
    2. 合理的安排切面的执行时间(在目标方法前面,还是在目标方法后面)
    3. 合理的安排切面执行的位置,在哪个类,在哪个方法增加增强功能
什么时候使用AOP技术
  • 当你要给一个项目存在的类修改功能,但是原有的类的功能不完善,并且没有源代码,就可以使用aop增加功能
  • 给项目中的多个类,增加一个相同的功能,使用aop给业务方法增加是事务,日志输出
面向切面编程的术语
  • Aspect:切面,表示增强的功能,就是一堆代码,完成某一个功能,非业务功能,
    常见的切面功能:日志,事务,统计信息,参数检查,权限验证
  • JoinPoint:连接点 连接业务方法和切面的位置,其实就是类中的业务方法
  • Pointcut:切入点 指多个连接点方法的集合
  • 目标对象:给哪个类的方法添加功能,这个类就是目标对象
  • Advice:通知, 通知表示切面功能执行的时间,(在方法之前还是在方法之后)
一个切面有三个关键的要素:
  1. 切面的功能代码,Aspect 切面要干什么
  2. 切面的执行位置,Pointcut 也就是在那个方法里加功能
  3. 切面执行的时间,Advice 也就是在方法前还是后
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值