001-Java基础-反射/动态代理

什么是反射

反射赋予程序解释或者修改其运行时行为的能力,例如获取类的定义,或者类声明的属性和方法。

与反射相关常见的类:java.lang.Class 以及 java.lang.reflect包下的Field,Method,Constructor等类。

反射教程: https://docs.oracle.com/javase/tutorial/reflect/index.html

什么是动态代理

动态代理是一种程序在运行时动态构建代理,动态处理代理方法的机制。

实现动态代理的手段很多,反射是其中一种。

动态代理常备用来实现拦截器,面向切面编程,实现RPC调用等等。

动态代理的实现方式

实现动态代理的方式很多,反射(JDK Proxy)是其中一种。

在Spring AOP中,还支持以cglib的方式实现动态代理。

两种代理实现方式的优势

JDK Proxy的优势:

  • 最小化依赖,不用引入第三方JAR包。
  • JDK升级默认支持,不用担心升级JDK版本之后代码不能用。
  • 实现逻辑简单。

cglib的优势:

  • 不需要额外实现接口类。
  • 性能更好。
上篇001-Java基础-集合
下篇001-JAVA基础-四种引用类