一、前言
  1. 这篇博客主主要记录关于 AOP 代理的几种方式
  2. 由繁至简分:手动代理,半自动代理,全自动代理
二、手动代理(分两种)
2.1 JDK动态代理
  1. 前提:目标类必须是 接口 + 实现 类型,否则无法代理
  2. 创建目标类
    AOP 笔记(二)
  3. 创建切面类
    AOP 笔记(二)
  4. 创建工厂类
    AOP 笔记(二)
  5. 创建测试类
    AOP 笔记(二)
  6. 测试结果
    AOP 笔记(二)
2.2 cglib 增强字节码
  1. 前提1:目标类可以是仅有实现类,也可以是接口 + 实现类,兼容两者
  2. 前提2:使用 cglib 必须导入依赖包 — spring-core-3.2.0.RC2.jar (版本不限)
  3. 切面类与上文共用
  4. 创建目标类(没有接口,直接实现类)
    AOP 笔记(二)
  5. 工厂类(与上文公用一个类,但新建一个方法)
    AOP 笔记(二)
  6. 创建测试类
    AOP 笔记(二)
  7. 测试结果
    AOP 笔记(二)
2.3 两者差异
  1. 使用情景不同:
    1. JDK 代理,目标类必须是接口 + 实现类格式
    2. Cglib 代理,既可以是仅接口,又可以是接口 + 实现格式
  2. 使用 cglib 时候,需要导入 cglib 所依赖的 jar 包
三、Spring编写代理半自动
  1. 前提:导包 — 核心4+1 、AOP联盟(规范)、spring-aop(实现)
    AOP 笔记(二)

  2. 目标类与上文 JDK 手动代理共用

  3. 创建切面类
    AOP 笔记(二)

  4. Spring 配置
    AOP 笔记(二)

  5. 创建测试类
    AOP 笔记(二)

  6. 测试结果
    AOP 笔记(二)

四、Spring AOP全自动编程
  1. 前提:导包
    AOP 笔记(二)
  2. 切面类对象和目标类对象与半自动共用
  3. 配置 beans.xml 文件
    AOP 笔记(二)
  4. 创建测试类
    AOP 笔记(二)
  5. 测试结果
    AOP 笔记(二)
五、个人总结
  1. 可以从代码量很明显的发现,三者是由繁至简,一个比一个少
  2. 三者相比,需要手动配置的内容也越来越少
  3. 但是,不变的是对于目标类和切面类的声明都是必须可少的

相关文章: