Spring --- AOP(2) --- 动态代理

  • 设计模式
    • 动态代理
  • 为其他对象提供一种代理以控制对象的访问权限
  • 使用代理模式创建代理对象,控制目标对象的访问,在不改变目标对象的情况下调价额外的功能
  • UML类图
Spring --- AOP(2) --- 动态代理
 
  • 优点
    • 代理模式能将代理对象与目标对象分离,一定程度上降低了耦合度
    • 代理模式在客户端和目标对象之间起到了中介作用
    • 代理对象也可以对目标对象添加额外功能
  • 缺点
    • 一定程度上增加了系统的复杂度,降低了性能
  • 使用场景
    • 远程代理
      • 为一个位于不同地址空间的对象提供一个本地代理
    • 虚拟代理
      • 如果需要创建一个消耗比较大的对象,先创建一个小号比较小的代理对象,真正的对象只有在需要的时候才被创建
    • 安全代理
      • 控制对目标对象的访问权限
    • 防火墙代理
      • 保护目标对象不让恶意用户攻击
  • 增强类型

    • 前置增强

      • 执行前

    • 后置增强

      • 执行后

    • 环绕增强

      • 执行前后

    • 异常抛出增强

      • 异常抛出前后

    • 引介增强

      • 目标类之中添加新的方法与属性