Spring代理设计模式

代理设计模式

代理设计模式优点
1. 保护真实对象(不见到源码)
2. 职责加强 (增强功能)
3. 扩展 (接口扩展)

代理设计模式
1. 真实对象 (老总)
2. 代理对象 (秘书)
3. 抽象对象(抽象功能)


静态代理设计模式

由代理对象代理所有真实对象的功能

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

动态代理设计模式

为了解决静态代理模式的缺点

分类

1. JDK 动态代理    不需额外jar(JDK自带)
2. cglib 动态代理  需额外jar

JDK和cglib对比

JDK动态代理(false)

优点:
       jdk自带 不需要导入额外jar

缺点:
       1. 真实对象必须实现接口
       2. 利用反射机制(效率不高)

异常:
       希望把接口对象 --> 具体真实对象

cglib动态代理(true)

优点:
       1. 基于字节码 生成真实对象的子类
       2. 运行效率高
       3. 不需要实现接口    

缺点:
       1. 需要导入额外jar

异常:
       使用spring aop时,只要出现Proxy和真实对象转换异常

异常解决:
        proxy-target-class更改 true(cglib动态代理) / false(JDK动态代理)

配置文件aop标签(配合注解)

1
2
3
<aop:aspectj-autoproxy proxy-target-class="true">  //注解一定要打开true  用更高效的cglib

</aop:aspectj-autoproxy>

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 代理设计模式
  2. 2. 静态代理设计模式
  3. 3. 动态代理设计模式
    1. 3.1. 分类
  4. 4. JDK和cglib对比
    1. 4.1. JDK动态代理(false)
    2. 4.2. cglib动态代理(true)
    3. 4.3. 配置文件aop标签(配合注解)
,