码迷,mamicode.com
首页 > 编程语言 > 详细

spring学习记录_动态代理

时间:2020-08-18 13:28:50      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:alt   lazy   odi   pen   图片   基于   img   http   mic   

------------恢复内容开始------------

动态代理:

   特点:字节码随用随创建,随用随加载

   作用:不修改源码的基础上对方法增强

   分类:

       基于接口的动态代理

       基于子类的动态代理

 

   基于接口的动态代理:

       涉及的类:Proxy

       提供者:JDK官方

       如何创建代理对象:使用Proxy类中的newProxyInstance方法

       创建代理对象要求:被代理类最少实现了一个接口,如果没有则不能使用

        newProxyInstance参数:

            ClassLoader:类加载器

              作用:用于加载代理对象字节码。和被代理对象使用相同的类加载器。

              固定写法:xxx.getClass().getClassLoader()

            Class[]:字节码数组

              作用:用于让代理对象和被代理对象有相同方法。

              固定写法:xxx.getClass().getInterfaces()

            InvocationHandler:用于提供增强的代码

              作用:用于设置如何代理,一般是写一个该接口的实现类,通常情况下都是匿名内部类,但不是必须的,此接口实现类都是谁用谁写。

    一般都是写该接口的子接口实现类:MethodInterceptor

 技术图片

 

基于子类的动态代理:

   涉及的类:Enhancer

   提供者:第三方cglib

   如何创建代理对象:使用PEnhancer类中的create方法

   创建代理对象要求:被代理类不能是最终类

   create参数:

      Class:字节码

       作用:用于指定被代理对象字节码

       固定写法:xxx.getClass()

      Callback:用于提供增强的代码

技术图片

 

spring学习记录_动态代理

标签:alt   lazy   odi   pen   图片   基于   img   http   mic   

原文地址:https://www.cnblogs.com/huangbf/p/13511015.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!