Spring(6)--代理

背景:为了解决函数,谁需要谁调用的原则,改变代码风格,方便维护

优化后:

一、什么是代理模式?

代理模式的核心作用就是通过代理,控制对对象的访问。它的设计思路是:定义一个抽象角色,让代理角色和真实角色分别去实现它。

真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。它只关注真正的业务逻辑,比如歌星唱歌。

代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并在前后可以附加自己的操作,比如谈合同,布置场地,收钱等等。

这就是代理模式的设计思路。代理模式分为静态代理和动态代理。静态代理是我们自己创建一个代理类,而动态代理是程序自动帮我们生成一个代理,我们就不用管了。下面我详细介绍一下这两种代理模式。

二、静态代理

三、动态代理

动态代理的代理类是动态生成的,不是由程序员直接写好的。它分为两大类:基于接口的动态代理,基于类的动态代理

  • 基于接口,JDK动态代理
  • 基于类:cglib
  • java字节码实现:javasist

需要了解两个类:

(1)Proxy:生成代理的实例

(2)InvocationHandler:调用程序接口处理

posted @ 2020-04-10 15:21  code906  阅读(141)  评论(0)    收藏  举报