基于子类的动态代理:

提供者:第三方的CGLib,如果报asmxxxx异常,需要导入asm.jar。

<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>2.1_3</version>
</dependency>

要求:

  被代理类不能用final修饰的类(最终类)。

涉及的类:

  Enhancer

如何创建代理对象:

  使用Enhancer类中的create方法

create方法的参数:

  Class:字节码

    它是用于指定被代理对象的字节码。

  Callback:用于提供增强的代码

    它是让我们写如何代理。我们一般都是些一个该接口的实现类,通常情况下都是匿名内部类,但不是必须的。

    此接口的实现类都是谁用谁写。

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

 1 Producer cglibProducer = (Producer)Enhancer.create(producer.getClass(), new MethodInterceptor() {
 2             /**
 3              * 执行被代理对象的任何方法都会经过该方法
 4              * @param proxy
 5              * @param method
 6              * @param args
 7              *    以上三个参数和基于接口的动态代理中invoke方法的参数是一样的
 8              * @param methodProxy :当前执行方法的代理对象
 9              * @return
10              * @throws Throwable
11              */
12             public Object intercept(Object proxy, Method method, Object[] args, MethodProxy methodProxy) throws Throwable {
13                 //提供增强的代码
14
15                 //获取方法执行的参数
16                 Object returnValue = method.invoke(producer, args[0]);
17                 }
18                 return returnValue;
19             }
20         });
21         cglibProducer.saleProduct(12000f);

转载于:https://www.cnblogs.com/mkl7/p/10691939.html

基于子类的动态代理:相关推荐

  1. Spring框架----基于子类的动态代理

    上节,我们提到了基于接口的动态代理. 基于接口的动态代理 来完成通过中间代理商,消费者从生产商那里购买产品的功能. 这种动态代理要求第三方jar包的支持. cglib依赖,版本是2.1_3 基于子类的 ...

  2. 基于子类的动态代理(使用CBl工具)

    基于子类的动态代理 要求:                  1.被代理类不能是最终类,不能被finaly修饰                     提供者:第三方 CGlib           ...

  3. Spring框架----基于接口的动态代理

    由我们前面对代理的分析 对代理的分析 有生产商,销售人员和消费者这3个角色,销售人员是中间代理商.代理销售和售后的工作. 而在刚开始的时候,我们并没有销售人员.根据这样的思路,我们写出以下代码 接口I ...

  4. 第六篇 - 手写基于接口实现动态代理

    Github源码下载地址:https://github.com/chenxingxing6/sourcecode/tree/master/code-proxy 一.前言 我们知道常见的动态代理有两种实 ...

  5. aop简介-基于jdk的动态代理

    ①目标类接口 public interface TargetInterface {public void method(); } ②目标类 public class Target implements ...

  6. java基于接口的动态代理

    1.目标代理测试类 package com.proxy;public class StudentProxyTest {public static void main(String[] args) {/ ...

  7. 【spring】动态代理

    代理 动态代理 特点:字节码随用随创建,随用随加载 作用:不修改源码的基础上对方法增强 分类:基于接口的动态代理.基于子类的动态代理 基于接口的动态代理: 涉及的类:Proxy     提供者:JDK ...

  8. 动态代理——》AOP —— Spring 中的 AOP||AOP 相关术语||学习 spring 中的 AOP 要明确的事

    AOP 概述 什么是 AOP       AOP:全称是 Aspect Oriented Programming 即:面向切面编程 AOP 的作用及优势 作用: 在程序运行期间,不修改源码对已有方法进 ...

  9. 动态代理JDK于cglib

    静态代理的缺点: 1.由于静态代理中的代理类是针对某一个类去做代理的,那么假设一个系统中有100个Service,则需要创建100个代理类 2.如果一个Service中有很多方法需要事务(增强动作), ...

最新文章

  1. Nature子刊封面:澳大真菌研究新突破 有助降低免疫力弱人群受真菌感染的风险...
  2. python基础常用语句-Python基本语句
  3. 输出值(4)输出值的应用
  4. 怎么看c语言错误出在哪,请各位大佬帮我看看错误出在哪里
  5. NET Core中使用Irony实现自己的查询语言语法解析器
  6. 使用WebCrypto API的电子签名
  7. 114实名认证未通过_企业微信怎么实名认证?实名认证后还可以改吗?
  8. 32位汇编寄存器含义解释
  9. (二)Nginx安装与配置
  10. 揭开艺术特长考试神秘面纱
  11. 用java怎么让时间走动起来,java脚本实现时间刷新
  12. MySQL从入门到精通详细教程
  13. 电脑硬盘坏了怎么修复
  14. python webkit内核_360浏览器使用meta标签强制使用指定webkit内核 - meta强制用极速模式...
  15. 安居客 楼盘信息 项目代码-
  16. CTU 2017 B - Pond Cascade 二分
  17. 【无标题】7-11 sdut-C语言实验- 数列有序! 7-12 sdut-C语言实验- 中位数 7-13 sdut-C语言实验-各位数字之和排序 7-14 sdut-C语言实验- 冒泡排序中数据交换
  18. C#调用12306API做余票查询
  19. ICV:车载激光雷达市场将在三年内迎来百亿美元的蓝海市场
  20. LabVIEW调用第三方exe软件或操作操作控制第三方软件界面的控件,如操控烧录软件

热门文章

  1. Centos7部署JAVA环境
  2. OSPF(Open Shortest Path First开放式最短路径优先)
  3. Centos 安装 NodeJS
  4. web spring 容器
  5. PHPCMS V9 框架代码分析(入口程序)
  6. 优化杭州某著名电子商务网站高并发千万级大型数据库经验之- 磁盘I/O性能
  7. 重要头文件: cc430x613x.h
  8. 浅谈分布式CAP定理
  9. 串行总线---差分互连(差分线)之共模、奇模、偶模
  10. django用户认证系统——注册3