代理的功能

只要是面向方面的编程就要用到代理。

对于已经开发好的类,你想要给它增加功能,比如日志、控制实务、异常处理、计算方法处理时间。

JVM可以自动的生成类的字节码。这种动态生成的类,往往拿出来作为代理。

JVM动态生成的类必须实现一个或多个接口。

如果你的目标类没有实现的接口,要想生成它的代理,用CGLIB。

生成的代理除了调用目标类的方法,还要干些额外的事,代理类可以在调用方法之前,也可以在之后,或者之前和之后,或者try...catch的处理异常的代码块中

 

类的代理没有无参的构造方法。

 

让jvm创建动态类即其实例对象,需要给它提供那些信息?

     三方面:

           1. 生成的类中有哪些方法,通过让其实现那些接口的方式进行告知;

           2. 产生的类字节码必须有个一个关联的类加载器对象;

           3. 产生的类中的方法的代码是怎样的,也得由我们提供。吧我们的代码卸载一个约定好了接口对象的方法中,把对象传给它,它调用我的方法,即相当于插入了我的代码。提供 执 行代码的对象就是那个InvocationHandler对象,它是在创建动态类的实例对象的构造方法时传递进去的。在上面的InvocaionHandler对象的invoke方法中加一点代码,就可以看到这些大妈被调用运行了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值