
基于子类的动态代理
发布日期:2021-05-10 19:06:21
浏览次数:21
分类:精选文章
本文共 1781 字,大约阅读时间需要 5 分钟。
导入环境
cglib cglib 2.1_3
Producer.java
package com.itheima.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.itheima.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(); Producer cglibProducer = (Producer)Enhancer.create(producer.getClass(), new MethodInterceptor() { /** * 执行北地阿里对象的任何方法都会经过该方法 * @param proxy * @param method * @param args * 以上三个参数和基于接口的动态代理中invoke方法的参数是一样的 * @param methodProxy :当前执行方法的代理对象 * @return * @throws Throwable */ @Override public 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); }}
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年04月23日 09时34分41秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
this.$router.push不起作用(this指向错误)
2021-05-10
SpringBoot工程临时加一个分页的yml文件没有生效
2021-05-10
flume使用中的一些常见错误解决办法 (地址已经使用)
2021-05-10
OpenCV camshift目标追踪
2021-05-10
day04_CSS选择器
2021-05-10
python基础语法
2021-05-10
const修饰指针(常量指针与指针常量的区别)
2021-05-10
设计模式-创建型02-工厂模式-工厂方法模式01
2021-05-10
微信小程序sort时间排序
2021-05-10
<s>
2021-05-10
常见错误
2021-05-10
第十一节 IO编程
2021-05-10
Linux系统调用过程
2021-05-10
stm32 uv5打开uv4工程错误
2021-05-10
mysql怎么终止一个事务_MySql 中游标,事务,终止存储过程方法总结
2021-05-10
最基础的urllib.request.urlopen()基本使用
2021-05-10
C# 异常
2021-05-10
strlen sizeof 快
2021-05-10
【Java-27】Java常见错误记录
2021-05-10
andriod 开发错误记录
2021-05-10