Java 动态代理

Introduction

动态代理在Java中有着广泛的应用,比如Spring AOP、Hibernate数据查询、测试框架的后端mock、RPC远程调用、Java注解对象获取、日志、用户鉴权、全局性异常处理、性能监控,甚至事务处理等。

Java中两种常见的动态代理方式:

  • JDK原生动态代理;
  • CGLIB动态代理;

如果根据字节码的创建时机来分类,可以分为:

  • 静态代理:在程序运行前就已经存在代理类的字节码文件,代理类和真实主题角色的关系在运行前就确定了。
  • 动态代理:在程序运行期间由 JVM 根据反射等机制动态的生成,所以在运行前并不存在代理类的字节码文件。

静态代理


动态代理


Reference