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:用于提供增强的代码

  • 相关阅读:
    JavaScript之链式结构序列化
    js 常用的正则表达式
    99%的人都理解错了HTTP中GET与POST的区别
    取代Promise的Generator生成器函数
    深入了解JavaScript权威指南
    限制input输入类型(多种方法实现)
    textillate.js 文字动画
    jQuery如何改变css伪元素样式
    保存android程序崩溃日志到SD卡
    跟我一起学extjs5(19--模块记录的拖放删除、拖放复制新增)
  • 原文地址:https://www.cnblogs.com/huangbf/p/13511015.html
Copyright © 2011-2022 走看看