前言
代理机制是指给某个对象提供一个代理对象,通过代理对象来对这个对象进行引用并对一些方法进行增强。可以理解为结婚事件:
结婚的人只需要进行结婚的操作(委托类),其余的布置场地等操作交给婚庆公司来做(增强),在代理类(婚庆公司)执行代理方法时(结婚的操作)就完成了增强以及被委托的方法(布置场地等等一些准备操作-结婚-结束结婚)。
按照代理的创建时期可以分为静态代理和动态代理。
静态代理
静态代理在我们写好代码并进行编译后就生成了静态代理类.class文件。JVM通过加载这个.class文件来加载我们的代理类。
静态代理需要的是一个接口代理类和委托类都需要实现这个接口,在代理类中委托类会被当成一个成员。
动态代理模式
动态代理模式一个是JDKProxy一个是CGlibProxy。
1.原生JDK代理:
①代理的是一个实现某个接口的类(必须要有接口)
②产生的代理对象类型是接口类型
③代理对象只能调用接口中的方法
2.CGlibProxy,需要导包。
①无需有接口,只需要一个实现类
②能够执行的方法全部都在实现类中,能够随时添加
对于JDK代理只需要调用Proxy类的newnewProxyInstance并实现InvocationHandler接口,在方法执行前可以增加前置拦截,方法执行
后增加后置拦截。当然可以增加其他增强。
对于CGlibProxy需要生成一个enhancer,设置enhancer的superClass以及设置callBack方法实现MethodInteMethodInterceptor方法,并返回enhancer.create()方法即可