黑马程序员-Java动态代理

首先让我们来了解一下如何使用 Java 动态代理。具体有如下四步骤:

  1. 通过实现 InvocationHandler 接口创建自己的调用处理器;
  2. 通过为 Proxy 类指定 ClassLoader 对象和一组 interface 来创建动态代理类;
  3. 通过反射机制获得动态代理类的构造函数,其唯一参数类型是调用处理器接口类型;
  4. 通过构造函数创建动态代理类实例,构造时调用处理器对象作为参数被传入。

JVM可以在运行期动态生成出类的字节码,这种动态生成的类旺旺被用作代理类,即动态代理。

JVM生成的动态类必须实现一个或多个接口,所以,JVM生成的动态类只能用作具有相同接口的目标类的代理。
代理类的各个方法中通常除了要调用目标的相应方法和对外返回目标返回结果外,还可以在代理方法中的如下四个位置加上系统功能代码:
1、在调用目标方法之前
2、在调用目标方法之后
3、在调用目标方法前后
4、在处理目标方法一场的Catch快中
实现动态代理的一个例子:


[java]  view plain copy
  1. //MyAdvice类的代码如下:  
  2. public class MyAdvice implements Advice {  
  3.         long beginTime ;  
  4.         @Override  
  5.         public void beforeMethod(Method method) {  
  6.                System.out.println("我来黑马了!!!");  
  7.                beginTime = System.currentTimeMillis();  
  8.         }  
  9.         @Override  
  10.         public void afterMethod(Method method) {  
  11.                System.out.println("我来音悦台工作了!!!");  
  12.                long endTime = System.currentTimeMillis();  
  13.                System.out.println(method.getName()+"runtime of"+(endTime-beginTime));  
  14.         }  
  15. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值