美文网首页程序员
Spring-静态/动态代理模式

Spring-静态/动态代理模式

作者: Margolu | 来源:发表于2020-10-19 22:57 被阅读0次

    静态代理

    静态代理角色分析

    抽象角色:一般使用接口或者抽象类来实现

    真实角色:被代理的角色

    代理角色:代理真实角色,代理真实角色后,一般会做一些附属的操作

    客户:使用代理角色来进行一些操作

    示例代码

    抽象角色:租房

    真实角色:房东要出租房子

    代理角色:中介带客户看房子,租房子,收中介费。

    客户:找中介,中介代理房东

    静态代理的优点

    使得真实角色更加纯粹

    公共的业务由代理来完成,实现了业务的分工

    公共业务发生扩展时变得更加集中和方便

    缺点:

    类多了,多了代理,工作量增加,开发效率低。

    静态代理再理解

    1.创建一个抽象角色:增删改查业务

    创建真是对象,完成增删改查操作

    设置代理角色,增加日志的实现

    代理模式作用:在不改变原有代码的情况下,实现了对原有功能的增强

    AOP的核心思想

    动态代理

    动态代理和静态代理的角色一样

    动态代理的代理类是动态生成的,静态代理的代理类是我们提前写好的

    动态代理分为两类:一类是基于接口动态代理,一类是基于类的动态代理

    基于接口的动态代理--JDK动态代理

    基于类的动态代理--cglib

    JDK动态代理需要了解两个类:InvocationHandler和Proxy

    InvocationHandler是由代理实例的调用处理程序实现的接口。每个代理实例都有一个关联的调用处理程序。当在实例上调用方法时,方法调用将被编码并分派到其调用处理程序的invoke方法

    proxy-调用该方法的代理实例

    method-所述方法对应于调用代理实例上的接口方法的实例。方法对象的声明类将是该方法声明的接口。

    Proxy 代理

    提供了创建动态代理类和实例的静态方法,它也是由这些方法创建的所有动态代理类的超类。

    第一个参数classLoader --类加载器来定义代理类

    第二个参数interfaces-代理类实现的接口列表

    第三个参数h--调度方法调用的调用处理函数

    代码实现

    核心:一个动态代理一般代理某一类业务,一个动态代理可以代理多个类,代理的是接口。

    如下:同样可以代理用户业务增删改查

    相关文章

      网友评论

        本文标题:Spring-静态/动态代理模式

        本文链接:https://www.haomeiwen.com/subject/abbqmktx.html