java-动态代理与静态代理


转自:https://www.cnblogs.com/cC-Zhou/p/9525638.html

静态代理:编码阶段,实现代理类。

动态代理:类加载阶段,实现代理类。

类型 实现方式 代理的时期 实现原理 应用场景
静态代理   编码阶段    
动态代理 JDK动态代理:利用Proxy类,面向接口的动态代理 类加载阶段 代理类依赖被代理类 spring的AOP(包括事务)
  CGLIB动态代理:利用asm开源包,面向接口或者类的动态代理(修改字节码) 类加载阶段 代理类继承被代理类
 
aspectj-maven-plugin编译器编译阶段完成字节码修改
编译阶段  

 

 

 

 

代理

代理是英文 Proxy 翻译过来的。我们在生活中见到过的代理,大概最常见的就是朋友圈中卖面膜的同学了。

她们从厂家拿货,然后在朋友圈中宣传,然后卖给熟人。

这里写图片描述

按理说,顾客可以直接从厂家购买产品,但是现实生活中,很少有这样的销售模式。一般都是厂家委托给代理商进行销售,顾客跟代理商打交道,而不直接与产品实际生产者进行关联。

所以,代理就有一种中间人的味道。

接下来,我们说说软件中的代理模式。