1.意义
动态代理的意义在于生成一个代理对象,来代理真实对象,从而控制真实对象的访问。
2.代理的作用
代理的作用就是,在真实对象访问之前或者之后加入对应的逻辑,或者根据其他规则控制是否使用真实对象。
3.java中动态代理技术
如 JDK CGLIB Javassist ASM .常用的有两种,JDK CGIB
4.JDK动态代理
前提:java.lang.reflect.*包提供的方式 使用反射技术,必须借助一个借口才能产生代理对象。 要实现代理逻辑类,必须要实现java.lang.reflect.InvocationHandler接口,其中定义了一个invoke方法,用来代理方法逻辑的实现。
接口:
接口实现,重写方法:
建立代理对象与真实对象之间的关系,并实现代理关系:
main中实现:
method.invoke处会调用接口实现类中的方法。
5.CGLIB动态代理
跟JDK不同的是CGLIB实现不需要借助接口,只需要导入核心包就可以使用了。(spring-core-xxxx.jar).创建动态代理类实现接口MethodIntersepter,重写invoke方法。