zoukankan      html  css  js  c++  java
  • spring学习记录_动态代理

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

    动态代理:

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

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

       分类:

           基于接口的动态代理

           基于子类的动态代理

     

       基于接口的动态代理:

           涉及的类:Proxy

           提供者:JDK官方

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

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

            newProxyInstance参数:

                ClassLoader:类加载器

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

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

                Class[]:字节码数组

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

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

                InvocationHandler:用于提供增强的代码

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

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

     

     

    基于子类的动态代理:

       涉及的类:Enhancer

       提供者:第三方cglib

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

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

       create参数:

          Class:字节码

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

           固定写法:xxx.getClass()

          Callback:用于提供增强的代码

  • 相关阅读:
    常见的无损压缩算法
    多媒体基本概念
    电子商务
    Java正则表达式
    Java 注解
    java泛型
    Java的反射机制
    Java 动态代理
    函数调用约定_stdcall[转]
    要研究的东东啊
  • 原文地址:https://www.cnblogs.com/huangbf/p/13511015.html
Copyright © 2011-2022 走看看