说明
1、cglib代理可以称为子类代理,是在内存中构建子类对象,从而扩展目标对象的功能。
静态代理和jdk代理都需要一个对象来实现一个接口。有时候代理对象只是一个单独的对象,cglib代理可以在这个时候使用。
2、cglib通过enhancer生成代理类,通过实现methodinterceptor接口,实现intercept方法。
可以在该方法中添加增强方法,并可以使用反射method或methodproxy继承类来调用原始方法。
实例
public class tvproxycglib implements methodinterceptor { //给目标对象创建一个代理对象 public object getproxyinstance(class c){ //1.工具类 enhancer enhancer = new enhancer(); //2.设置父类 enhancer.setsuperclass(c); //3.设置回调函数 enhancer.setcallback(this); //4.创建子类(代理对象) return enhancer.create(); } @override public object intercept(object o, method method, object[] objects, methodproxy methodproxy) throws throwable { system.out.println(tvproxyfactory enhancement.....); object object = methodproxy.invokesuper(o, objects); return object; }}
以上就是java中的cglib代理如何使用的详细内容。