Java的动态代理

Java的动态代理主要是指位于java.lang.reflect包下的Proxy类,在使用过程中会用到同一个包下的InvocationHandler接口。

 

 

1.Proxy类提供了个静态方法Object  newProxyInstance ( ClassLoader  loader,  Class <?>[] interfaces, InvocationHandler  h) ,用来生成代理对象:
     loader是目标类的类加载器,
  interfaces是目标类实现的接口(并不一定是它实现的所有接口,用Class<?>[]类型表示就可以了), h是InvocationHandler类型的一个对象。
 
2.InvocationHandler接口提供类一个方法Object invoke(Object proxy,Method method,Object[] args) throws Throwable,用来调用目标方法并提供新的功能:
   proxy是代理对象,
   method是目标方法,
   args是目标方法的参数列表。
 
所谓动态代理其实就是这样的一种对象:它是在程序运行时动态生成的对象,在生成它时你必须提供一组接口给它,然后该对象就宣称它实现了这些接口。你当然可以把该对象当作这些接口中的任何一个来用。当然,这其实就是一个代理对象,它不会替你作实质性的工作,在生成它的实例时你必须提供一个handler,由它接管实际的工作。
接口:
目标类:
Handler:
测试类:
运行结果:

========begin transaction=========
==========目标方法:test1()============
========end transaction==========
========begin transaction=========
==========目标方法:test2()============
========end transaction==========
========begin transaction=========
==========目标方法:test3()============
========end transaction==========

==========目标方法:test4()============ 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值