java-动态代理与静态代理
转自:https://www.cnblogs.com/cC-Zhou/p/9525638.html
静态代理:编码阶段,实现代理类。
动态代理:类加载阶段,实现代理类。
| 类型 | 实现方式 | 代理的时期 | 实现原理 | 应用场景 |
| 静态代理 | 编码阶段 | |||
| 动态代理 | JDK动态代理:利用Proxy类,面向接口的动态代理 | 类加载阶段 | 代理类依赖被代理类 | spring的AOP(包括事务) |
| CGLIB动态代理:利用asm开源包,面向接口或者类的动态代理(修改字节码) | 类加载阶段 | 代理类继承被代理类 | ||
aspectj-maven-plugin编译器编译阶段完成字节码修改 |
编译阶段 |
代理
代理是英文 Proxy 翻译过来的。我们在生活中见到过的代理,大概最常见的就是朋友圈中卖面膜的同学了。
她们从厂家拿货,然后在朋友圈中宣传,然后卖给熟人。
按理说,顾客可以直接从厂家购买产品,但是现实生活中,很少有这样的销售模式。一般都是厂家委托给代理商进行销售,顾客跟代理商打交道,而不直接与产品实际生产者进行关联。
所以,代理就有一种中间人的味道。
接下来,我们说说软件中的代理模式。