AOP面向切面编程

来源:互联网 发布:个人淘宝店铺转让 编辑:程序博客网 时间:2024/06/01 09:11

一。为何要用AOP
为了代码的复用我们将相同的方法抽出出来,通过继承的方法实现。但是有时候,相同的方法却不能抽取出来。
这里写图片描述
图中粗体代码是用来监测性能的。比如创建删除需要多少时间。这时候虽然他们都有
transManaget.beginTransaction(); 等方法,但是这些方法和业务紧密连接在一起。无法抽取出来。
这里写图片描述

代码关系,如图所示,这就像一个树的切面。这也是切面概念的由来。
抽取,继承采用的是纵向的方式,复用代码。
AOP,采用横向的方法抽取。把共同的代码抽取出来,使用的时候再织入在一起。

AOP的基本概念:

  1. 连接点
  2. 切点
  3. 增强
  4. 目标对象
  5. 引介
  6. 织入
  7. 代理
  8. 切面
    连接点:方法前,方法后。这样的确定点。叫连接点。
    切点:只能定位到某一个方法上。Pointcut
    增强: 程序代码+方位。Advice
    (方位+切点=连接点)
    目标对象:目标类 target
    引介:一种特殊的增强,为类添加属性和方法 Introduction
    织入:1.编译器织入,需要特殊的JAVA编译器
    2. 类装载器织入,需要特殊的类装载器。
    3. 动态代理织入,为目标类添加增强生成子类。
    代理:目标类被织入增强了,就产生了一个结果类。
    切面:切面由切点和增强引入。

AOP的工作就是讲增强逻辑代码织入到目标对象的连接点上。


原创粉丝点击