Producer.java

package com.claroja.cglib;/*** 一个生产者*/
public class Producer {/*** 销售* @param money*/public void saleProduct(float money){System.out.println("销售产品,并拿到钱:"+money);}/*** 售后* @param money*/public void afterService(float money){System.out.println("提供售后服务,并拿到钱:"+money);}
}

Client.java

package com.claroja.cglib;import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;import java.lang.reflect.Method;/*** 模拟一个消费者*/
public class Client {public static void main(String[] args) {final Producer producer = new Producer();/*** 动态代理:*  特点:字节码随用随创建,随用随加载*  作用:不修改源码的基础上对方法增强*  基于子类的动态代理:*      涉及的类:Enhancer*      提供者:第三方cglib库*  如何创建代理对象:*      使用Enhancer类中的create方法*  创建代理对象的要求:*      被代理类不能是最终类*  create方法的参数:*      Class:字节码*          它是用于指定被代理对象的字节码。**      Callback:用于提供增强的代码*          它是让我们写如何代理。我们一般都是些一个该接口的实现类,通常情况下都是匿名内部类,但不是必须的。*          此接口的实现类都是谁用谁写。*          我们一般写的都是该接口的子接口实现类:MethodInterceptor*/Producer cglibProducer = (Producer)Enhancer.create(producer.getClass(), new MethodInterceptor() {/*** 执行北地阿里对象的任何方法都会经过该方法* @param proxy* @param method* @param args*    以上三个参数和基于接口的动态代理中invoke方法的参数是一样的* @param methodProxy :当前执行方法的代理对象* @return* @throws Throwable*/@Overridepublic Object intercept(Object proxy, Method method, Object[] args, MethodProxy methodProxy) throws Throwable {//提供增强的代码Object returnValue = null;//1.获取方法执行的参数Float money = (Float)args[0];//2.判断当前方法是不是销售if("saleProduct".equals(method.getName())) {returnValue = method.invoke(producer, money*0.8f);}return returnValue;}});cglibProducer.saleProduct(12000f);}
}

Java proxy 子类代理相关推荐

  1. 深入理解Java Proxy和CGLIB动态代理原理

    点击上方关注,每天进步一点点 动态代理在Java中有着广泛的应用,比如Spring AOP,Hibernate数据查询.测试框架的后端mock.RPC,Java注解对象获取等.静态代理的代理关系在编译 ...

  2. Java Proxy和CGLIB动态代理原理

    动态代理在Java中有着广泛的应用,比如Spring AOP,Hibernate数据查询.测试框架的后端mock.RPC,Java注解对象获取等.静态代理的代理关系在编译时就确定了,而动态代理的代理关 ...

  3. 【java】深入分析Java反射-动态代理 proxy

    1.概述 转载:深入分析Java反射(四)-动态代理 [Java]Java 反射机制浅析 [Java]java代理 静态代理 动态代理 proxy [java]静态代理 proxy 2.动态代理的简介 ...

  4. java Proxy(代理机制)

    我们知道Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC,依赖注入就不用多说了,而对于Spring的核心AOP来说,我们不但要知道怎么通过AOP来满足的我们的功能,我们更需要学习 ...

  5. Java设计模式之代理模式(Proxy)

    参考http://blog.csdn.net/jianghuxiaoxiami/article/details/3403924 1.代理模式 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的 ...

  6. Java进阶 | Proxy动态代理机制详解

    一.Jvm加载对象 在说Java动态代理之前,还是要说一下Jvm加载对象的过程,这个依旧是理解动态代理的基础性原理: Java类即源代码程序.java类型文件,经过编译器编译之后就被转换成字节代码.c ...

  7. Proxy 动态代理 InvocationHandler CGLIB MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  8. java基础---动态代理机制

    动态代理的意思是,有一个委托类有一个代理类,让代理类去实现委托类的方法,这样既可以对委托类的代码实现进行封装和隐藏,还能够在委托类的基础上添加额外的一些自定义处理. 两种代理方式 1.jdk原生的代理 ...

  9. Java中的代理模式

    1.什么是代理模式 代理模式:就是为其他对象提供一种代理以控制对这个对象的访问. 代理可以在不改动目标对象的基础上,增加其他额外的功能(扩展功能). 举个例子来说明代理的作用: 一般我们想邀请明星来当 ...

最新文章

  1. Python编辑器与集成开发环境(IDE)选择
  2. 遇到Request header is too large,你们是如何解决的?
  3. 【NLP】经典分类模型朴素贝叶斯解读
  4. map mybatis 的字段返回0_Mybatis 你踩过坑吗?
  5. php设计模式 -- 工厂模式
  6. 1的阶乘在c语言里咋表示,C语言编程求阶乘1到10并分别显示在屏幕上 – 手机爱问...
  7. markdownpad2 html渲染组件出错_「万字长文」一文吃透React SSR服务端同构渲染
  8. 序列每天从0开始_序列比对(十一)——计算符号序列的全概率
  9. 【JS 逆向百例】百度翻译接口参数逆向
  10. spring cloud微服务_年后进大厂,必备这份微服务面试题:Dubbo+SpringBoot+Cloud
  11. linux java 环境配置_Linux开发环境配置——java
  12. StreamingAssets文件夹的读取异常
  13. Coursera营养学课程考试小抄
  14. 软件开发工具--自考2019年4月
  15. 小D课堂 - 新版本微服务springcloud+Docker教程_4-01 常用的服务间调用方式讲解
  16. 生命在于学习——密码暴力破解
  17. 细说.NET中的多线程 (六 使用MemoryBarrier,Volatile进行同步)
  18. 大学网课查题接口平台
  19. Python报错记录之“list indices must be integers or slices, not str”
  20. r语言决策树c4.5案例,C4.5主要思想与决策树实例

热门文章

  1. python爬虫之协程理解爬取照片的简单版
  2. Python+matplotlib数据可视化设置图例3个精选案例
  3. 微课|中学生可以这样学Python(例11.3):tkinter通信录管理系统4
  4. Python线程类首先是一个类
  5. 小米11全系机型补齐,超大杯压场,但Pro版也不容忽视
  6. java中路由的使用方法_java – 在camel路由中使用方法作为生产者
  7. english grammar in use 电子版_③ 采购笔记之节点与凭证、采购的进阶、采购合同要素。(电子版整理中)...
  8. 力扣59.螺旋矩阵II(JavaScript)
  9. Java刷新Jpanel_java – 刷新JPanel
  10. 继承的原理java_Java继承和多态的原理