spring学习(七):AOP

一、AOP和 OOP

OOP:面向对象编程

AOP:面向切点编程

AOP的适用范围:如性能监测、事务控制、访问管理及事务控制等

二、AOP术语

  1. 连接点(JoinPoint):如类开始初始化前,类初始化后、类的某个方法执行前/执行后、方法抛出异常后。一个类或一段程序代码拥有一些具有边界性质的特定点,称为连接点。连接点由两个信息确定:
    1. 用方法表示的程序执行点
    2. 用相对位置表示的方位:如Test.foo()方法执行前的连接点,执行点为Test.foo(),方位为该方法执行前的位置
  2. 切点(PointCut):借助数据库查询的概念来理解。连接点相当于每条记录,而切点则相当于查询条件。一个切点可以匹配多个连接点。
  3. 增强(Advice):增强是织入目标类连接点上的一段程序代码。
  4. 目标对象(Target):增强逻辑织入的目标类
  5. 引介(Introduction):引介是一种特殊的增强,它为类添加一些特殊的属性和方法
  6. 织入(Weaving):织入是将增强添加到目标类连接点上的过程,三种织入方式
    1. 编译期织入:要求使用特殊的java编译器
    2. 类装载期织入:要求使用特殊的类装载器
    3. 动态代理织入:在运行期为目标类添加增强生成子类的方式
    4. Spring采用动态代理,而AspectJ采用编译期织入和类装载期织入
  7. 代理(Proxy):
  8. 切面(Aspect):由切点和 增强(引介)组成。既包含横切逻辑的定义,也包括连接点的定义

三、SpringAOP

两种代理机制:

  • 基于JDK动态代理:只支持接口代理
  • 基于CGLib动态代理:由于采用动态代理生成子类的方式,不能对目标类中的final和private方法进行代理。(比JDK动态代理的性能高出10倍左右)

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章