1、说明
CGLIB是一个功能强大,高性能的代码生成包。它为没有实现接口的类提供代理,为JDK的动态代理提供了很好的补充。
CGLIB是第三方提供的包,所以需要引入jar包的坐标:
2、实例
publicclassHelloWorld{ publicstaticvoidmain(String[]args){ //创建代理工厂对象 ProxyFactoryfactory=newProxyFactory(); //获取代理对象 TrainStationproxyObject=factory.getProxyObject(); proxyObject.sell(); } } //火车站,火车站具有卖票功能 classTrainStation{ publicvoidsell(){ System.out.println("火车站卖票"); } } //代理工厂 publicclassProxyFactoryimplementsMethodInterceptor{ privateTrainStationtarget=newTrainStation(); publicTrainStationgetProxyObject(){ //创建Enhancer对象,类似于JDK动态代理的Proxy类,下一步就是设置几个参数 Enhancerenhancer=newEnhancer(); //设置父类的字节码对象 enhancer.setSuperclass(target.getClass()); //设置回调函数 enhancer.setCallback(this); //创建代理对象 TrainStationobj=(TrainStation)enhancer.create(); returnobj; } publicTrainStationintercept(Objecto,Methodmethod,Object[]args,MethodProxymethodProxy)throwsThrowable{ /** *intercept方法参数说明: *o:代理对象 *method:真实对象中的方法的Method实例 *args:实际参数 *methodProxy:代理对象中的方法的method实例 */ System.out.println("代理点收取一些服务费用(CGLIB动态代理)"); TrainStationresult=(TrainStation)methodProxy.invokeSuper(o,args); returnresult; } }原文来自:https://www.py.cn
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容