cglib被hibernate用来动态生成po的字节码。CGLIB的底层是java字节码操作框架ASM。
今天简单看下cglib的用法。cglib的Enhancer说起来神奇,用起来一页纸不到就讲完了。它的原理就是用Enhancer生成一个原有类的子类,并且设置好callback到proxy, 则原有类的每个方法调用都会转为调用实现了MethodInterceptor接口的proxy的intercept() 函数。
package yuesef;
import java.lang.reflect.Method;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
public class TT {
public static void main(String ss[]) {
test();
}
static void test() {
while (true) {
Enhancer e = new Enhancer();
e.setSuperclass(OOMObject.class);//要生成OOMObject类的子类
e.setUseCache(false);
e.setCallback(new MethodInterceptor() {//