代理模式--CGLIB动态代理(内含详细实现步骤及代码)
来源:互联网 发布:专科 知乎 编辑:程序博客网 时间:2024/05/20 18:54
实现步骤:
1.创建被代理的类及方法。
public class Train { public void move() { System.out.println("火车行驶中"); }}
2.创建一个实现接口MethodInterceptor的类,重写intercept方法,创建获取被代理类的方法 getProxy(Class cla);
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 CglibProxy implements MethodInterceptor { private Enhancer enhancer = new Enhancer(); // 创建获取被代理类的方法 public Object getProxy(Class cla) { // 设置创建子类的类(为那个类产生代理类) enhancer.setSuperclass(cla); enhancer.setCallback(this); // 创建并返回类的实例 return enhancer.create(); } /*拦截所有目标类方法的调用 obj 目标方法的实例对象 m 目标方法的反射对象 args 方法的参数 proxy 代理类的实例 @Override public Object intercept(Object obj, Method m, Object[] args, MethodProxy proxy) throws Throwable { System.out.println("日志开始..."); // 代理类调用父类的方法 proxy.invokeSuper(obj, args); System.out.println("日志结束..."); return null; }}
3.获取代理类,通过代理调用方法
public class Test { public static void main(String[] args) { CglibProxy proxy = new CglibProxy(); //返回代理类的对象 Train t = (Train)proxy.getProxy(Train.class); t.move(); }}
控制台输出:
日志开始…
火车行驶中
日志结束…
阅读全文
1 0
- 代理模式--CGLIB动态代理(内含详细实现步骤及代码)
- 代理模式--JDK动态代理(内含详细实现步骤及代码)
- Cglib动态代理模式实现
- 代理模式三(cglib动态代理)
- 代理模式-cglib动态代理
- cglib动态代理模式
- cglib动态代理模式
- CGLIB实现动态代理
- CGLIB实现动态代理
- cglib实现动态代理
- CGLib实现动态代理
- cglib 实现动态代理
- cglib动态代理实现
- CGLib动态代理原理及实现
- CGLib动态代理原理及实现
- CGLib动态代理原理及实现
- 【转载】CGLib动态代理原理及实现
- CGLib动态代理原理及实现
- tf函数
- 【算法题】暗黑的字符串
- golang判断切片中重复出现次数最多的数字及出现次数
- Zero Turnaround Eclipse优化器 [记录]
- AndroidImageSlider实现广告轮播条
- 代理模式--CGLIB动态代理(内含详细实现步骤及代码)
- Linux学习-服务管理
- SUSE Linux 主机名修改
- Zookeeper集群是如何升级到新版本的
- 之江学院2017ACM校赛 Problem B: qwb与矩阵(记忆化搜索)
- C#线程(一、基本概念)
- 基本选择器、层次选择器
- 商城项目实战06:SSM框架整合之Dao层整合
- Android运行时异常:android.view.InflateException: Binary XML file line #354: Error inflating class inclu