Spring——14代理设计模式(静态和动态)

代理设计模式

1. 设计模式:

前人总结的一套解决特定问题的代码

2. 代理设计模式优点:

  1. 保护真实对象
  2. 让真实对象职责更明确
  3. 扩展

3. 代理设计模式

  1. 真实对象.(老总)
  2. 代理对象(秘书)
  3. 抽象对象(抽象功能),谈小目标

静态代理设计模式

1. 概念

由代理对象代理所有真实对象的功能
使用方式:

  1. 自己编写代理类
  2. 每个代理的功能需要单独编写

2. 静态代理设计模式的缺点

当代理功能比较多时,代理类中方法需要写很多

动态代理

1. 作用

为了解决静态代理频繁编写代理功能缺点

2. 分类

  1. JDK 提供的
  2. cglib 动态代理

JDK 动态代理

  1. 和 cglib 动态代理对比
    优点:jdk 自带,不需要额外导入 jar
  2. 缺点:
    ①真实对象必须实现接口
    ②利用反射机制.效率不高.
  3. 使用 JDK 动态代理时可能出现下面异常
java.lang.ClassCastException

出现原因:希望把接口对象转换为具体真实对象

cglib 动态代理

  1. cglib 优点:
    ①基于字节码,生成真实对象的子类
    注:运行效率高于 JDK 动态代理
    ②不需要实现接口
  2. cglib 缺点:
    非 JDK 功能,需要额外导入 jar(asm,cglib)
  3. 使用 springaop 时,只要出现 Proxy 和真实对象转换异常
    ①设置为 true 使用 cglib
    ②设置为 false 使用 jdk(默认值)
<aop:aspectj-autoproxy proxy-target-class="true">
</aop:aspectj-autoproxy>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值