JDK动态代理小例子
2017-02-27 17:59
281 查看
一个小汽车,有一个跑run()的方法,我们想使用jdk动态代理使小汽车执行run之前 加点油,run之后洗车。
有四个类,接口Car(小汽车)Kayan(具体实现类(卡宴)) CarProxy(汽车的代理) Test(测试类)
Car
Kayan这个是小汽车实现类
CarProxy 小汽车的代理类
测试代码
最后的结果显示
这种实现的思想类似于Spring的Aop的实现思路,但是AOP在使用jdk动态代理的时候也是用CGLib代理 。
有四个类,接口Car(小汽车)Kayan(具体实现类(卡宴)) CarProxy(汽车的代理) Test(测试类)
Car
public interface Car { public void run(); }
Kayan这个是小汽车实现类
public class Kayan implements Car { @Override public void run() { System.out.println("小汽车开始跑。。。。。。。。"); } }
CarProxy 小汽车的代理类
public class CarProxy implements InvocationHandler { // 小汽车会被代理 private Car car; // 通过set传入小汽车 public Car getCar() { return car; } public void setCar(Car car) { this.car = car; } public Car creatCarProxy() { Car proxy = (Car) Proxy.newProxyInstance(car.getClass().getClassLoader(), car.getClass().getInterfaces(), this); return proxy; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { if ("run".equals(method.getName())) { // 小汽车想要跑之前那要先加油啊 System.out.println("给小汽车加油啊。。oil。。oil。。oil"); Object object = method.invoke(car, args); System.out.println("跑完之后给小汽车擦车啊。。clean。。clean"); return object; } return method.invoke(car, args); } }
测试代码
// 测试小汽车的代理 @Test public void testCarProxy() { Car ky = new Kayan(); CarProxy proxy = new CarProxy(); proxy.setCar(ky); Car carProxy = proxy.creatCarProxy(); carProxy.run(); }
最后的结果显示
这种实现的思想类似于Spring的Aop的实现思路,但是AOP在使用jdk动态代理的时候也是用CGLib代理 。
相关文章推荐
- Java JDK 动态代理例子
- jdk动态代理的小例子
- jdk动态代理例子
- jdk动态代理小例子
- 实现动态代理的两种方式介绍+例子demo(JDK、CGlib)
- JDK动态代理小例子
- 一个简单的例子模拟JDK动态代理
- jdk的动态代理的例子
- JDK动态代理小例子
- jdk 动态代理基本例子
- jdk动态代理与cglib动态代理例子
- Spring学习——jdk动态代理例子
- JDK动态代理小例子
- jdk动态代理,cglib动态代理例子
- JDK动态代理的一个例子
- 自己写的jdk动态代理的例子
- Java代理模式之JDK动态代理例子
- JDK与Cglib实现的动态代理区别以及例子说明
- JDK动态代理源码例子解析
- 网摘-java静态代理和动态代理例子(jdk动态代理和cglib动态代理)