zoukankan      html  css  js  c++  java
  • Spring框架中2种生成代理对象的方法

    Spring框架中2种生成代理对象的方法

    Jdk Proxy基于接口生成代理对象,只能赋值给接口的引用(默认使用jdk)。

    Spring进一步封装 CGLIB,基于实现类生成代理对象,既可以赋值给接口的引用,也可以赋值给实现类的引用

    JDK提供的Proxy,和spring进一步封装的CGLIB。二者生成的代理没有任何区别,生成的都是代理对象。只是生产方式不同,前者是基于接口生成代理,后者基于实现类生成代理对象

    如何切换spring框架中默认生成代理的方式

    <aop:config proxy-target-class=”true|false”></aop:config>

    True代表使用目标类生成代理

    False代表使用jdk的proxy接口生成代理(默认)

    Proxy(代理):静态代理和动态代理

    作用:起到传递会话的作用,中断整个会话。

    好处:在完成核心业务的同时,做一些附加的操作。

    目标类(target):被代理类称之为目标类。

    开发代理的原则:和目标类功能一致且实现相同的接口。

    静态代理

    开发一个代理类,手动的为每个业务类添加代理方法,能够完成代理的功能。

    问题:往往在开发中,书写的不仅仅是一个或两个业务层,开发的业务层有很多,如果为每一个业务层开发一个静态代理类,不仅没有减轻工作量,反而增加了工作量。于是就提出了动态代理的方法,为现有的业务层在运行的过程中动态创建代理类,通过动态代理类去解决现有业务层中业务代码冗余的问题。

    动态代理

    通过jdk提供的proxy这个类,动态为现有的业务生成代理类。

    Proxy.newProxyInstance(loader,interfaces,h); //返回值就是动态代理对象

    参数一:当前线程类加载器

    参数二:生成代理类的接口类型

    参数三:通过代理对象调用方法是会优先进入参数三中的invoke方法

  • 相关阅读:
    1052 Linked List Sorting (25 分)
    1051 Pop Sequence (25 分)
    1050 String Subtraction (20 分)
    1049 Counting Ones (30 分)
    1048 Find Coins (25 分)
    1047 Student List for Course (25 分)
    1046 Shortest Distance (20 分)
    1045 Favorite Color Stripe (30 分)
    1044 Shopping in Mars (25 分)
    1055 The World's Richest (25 分)
  • 原文地址:https://www.cnblogs.com/lkldeblog/p/10685848.html
Copyright © 2011-2022 走看看