GCLIB代理

        CGLib (Code Generation Library) 是一个强大的,高质量的Code生成类库。它可以在运行期扩展Java类与实现Java接口。      

        CGLib 是Spring、Hibernate依赖的核心包,但是CGLib还算不上最底层的,因为它是在asm包之上做了封装,以增强易用性。据了解,Hibernate3.2已经不再依赖CGLib了,而直接依赖asm。这些都不影响CGLib的强大功能。

 

        下面一个小例:

        package cglib;

        public class Target{

                  public String execute() {
                            String message = "----------test()----------";
                            System.out.println(message);
                            return message;
                  }
         }

         //

         package cglib;

         import java.lang.reflect.Method;
         import net.sf.cglib.proxy.MethodInterceptor;
         import net.sf.cglib.proxy.MethodProxy;

         public class MyMethodInterceptor implementsMethodInterceptor{

                   public Object intercept(Object object, Method method, Object[] args,
         MethodProxy methodProxy) throwsThrowable {  

 
                             Object result = methodProxy.invokeSuper(object,args);
                             return"leaf";
                   }

          }

          //

          package cglib;

          import net.sf.cglib.proxy.Enhancer;

          public class TestCglibProxy {

                    public static void main(String rags[]){


                              Target target = newTarget();
                              TestCglibProxy test = newTestCglibProxy();
                              Target proxyTarget = (Target)test.createProxy(Target.class);
                              String res=proxyTarget.execute();
                              System.out.println(res);
                    }

                    public  Object createProxy(Class targetClass){


                               Enhancer enhancer = newEnhancer();
                               enhancer.setSuperclass(targetClass);
                               enhancer.setCallback(newMyMethodInterceptor());
                               returnenhancer.create();
                    }
           }

         ///输出:

          ----------test()----------
          leaf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值