CGLIB【理解】【难点】

来源:互联网 发布:linux gzip 打包压缩 编辑:程序博客网 时间:2024/06/14 22:38

1.AOP内部工作原理是通过代理对象实现织入功能

对于有接口实现的对象使用JDK动态代理

对于无接口实现的对象使用Cglib动态代理

2.CGLIB(code generator library)代码生成库——第三方技术

作用:动态的生成字节码

CGLIB中的核心对象是Enhance对象,它的作用是创建一段动态的类字节码。

CGLIB可以对任意的类进行代理,JDK的代理只能对实现接口的类进行代理

public class MyCglibProxyObject implements MethodInterceptor {

//提供一个方法用于创建Animal类的代理对象

public Animal createCglibProxyObject(){

//1.在内存中创建一个动态的类的字节码

Enhancer enhancer = new Enhancer(); //此时并没有做继承

//2.为其指定父类

//除了完成继承关系外,还将父类所有的方法名反射过来,并在自己的类中创建了这些方法 enhancer.setSuperclass(Animal.class);

//3.指定其回调操作

enhancer.setCallback(this);

//4.使用该类创建对象

return (Animal) enhancer.create();

}

public Object intercept(Object proxy, Method method, Object[] args,MethodProxy methodProxy) throws Throwable {

if(method.getName().equals("eat")){

System.out.println("吃前来个开胃菜");

}

return methodProxy.invokeSupper(proxy, args);

}

}

0 0
原创粉丝点击