通过反射创建动态代理对象(三)
2019独角兽企业重金招聘Python工程师标准>>>
一、概述
传入目标对象和Advice(要执行的内容)对“通过反射创建动态代理对象(二)”进行改造(AOP框架实现原理),建立更加通用的代理对象。
二、代码说明
1、Proxy2IntegrationReform.java
package staticimport.proxy;import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.Collection;import staticimport.proxy.advice.Advice;
import staticimport.proxy.advice.MyAdvice;/**** * 传入目标对象和Advice(要执行的内容)(AOP框架实现原理)* * @author Liu**/
public class Proxy2IntegrationReform {public static void main(String[] args) {Collection<String> target = new ArrayList<>();Collection proxy = (Collection) getProxy(target,new MyAdvice());proxy.add("a");proxy.add("b");proxy.add("c");// proxy.clear();System.out.println(proxy.size());}private static Object getProxy(final Object target,final Advice advice) {Object object = Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), new InvocationHandler() {@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {advice.beforeAdvice(method);Object object = method.invoke(target, args);advice.afterAdvice(method);return object;}});return object;}}
2、接口Advice.java
package staticimport.proxy.advice;import java.lang.reflect.Method;public interface Advice {void beforeAdvice(Method method);void afterAdvice(Method method);
}
3、MyAdvice.java
package staticimport.proxy.advice;import java.lang.reflect.Method;public class MyAdvice implements Advice {private long startTime;@Overridepublic void beforeAdvice(Method method) {startTime = System.currentTimeMillis();}@Overridepublic void afterAdvice(Method method) {long endTime = System.currentTimeMillis();System.out.println(method.getName() + " of time consume: " + (endTime - startTime) + " ms");}}
转载于:https://my.oschina.net/Howard2016/blog/1617990
通过反射创建动态代理对象(三)相关推荐
- 通过反射创建动态代理对象(二)
2019独角兽企业重金招聘Python工程师标准>>> 一.概述 将"通过反射创建动态代理对象(一)"合二为一 二.代码说明 package staticimpo ...
- java类加载机制、反射、动态代理详解
类的加载.连接和初始化(系统可能在第一次使用某个类时加载该类, 也可能采用预加载机制来加载某个类)动态代理实现 1.JVM和类 当调用 java 命令运行某个 Java 程序时, 该命令将会启动一个 ...
- Spring 从入门到精通 (十六) AOP底层如何创建动态代理类
关键词:Spring | AOP | 创建代理类 | 底层 本专栏通过理论和实践相结合,系统学习框架核心思想及简单原理,原创不易,如果觉得文章对你有帮助,点赞收藏支持博主 ✨ 目录 一.创建对象三要素 ...
- hook控制浏览器的方法_Java-Hook技术-入门实践+反射、动态代理、热修复再看看
延续之前的MonkeyLei:Android-模块化.组件化.插件化.热修复-插件化-起个头,我们复习下里面的关于反射和动态代理点的知识.然后尝试简单了解下Hook... 看之前文章,记得多复习下反射 ...
- 【IOC 控制反转】Android 事件依赖注入 ( 事件依赖注入具体的操作细节 | 创建 事件监听器 对应的 动态代理 | 动态代理的数据准备 | 创建调用处理程序 | 创建动态代理实例对象 )
文章目录 前言 一.创建 事件监听器 对应的 动态代理 二.动态代理 数据准备 三.动态代理 调用处理程序 四.动态代理 实例对象创建 前言 Android 依赖注入的核心就是通过反射获取 类 / 方 ...
- 死磕java底层(三)—反射、动态代理和注解
1.反射介绍 1.1反射 反射是指程序可以访问,检测,修改它本身状态或行为的一种能力. 1.2java的反射机制 java的反射机制是指在程序运行状态中,给定任意一个类,都可以获取到这个类的属性和方法 ...
- 【设计模式】代理模式 ( 动态代理使用流程 | 创建目标对象 | 创建被代理对象 | 创建调用处理程序 | 动态创建代理对象 | 动态代理调用 )
文章目录 前言 一.静态代理的弊端 二.动态代理的优势 三.动态代理使用流程 1.目标对象接口 2.被代理对象 3.调用处理程序 4.客户端 四.动态生成 代理对象 类 的 字节码 文件数据 前言 代 ...
- Java提高班(六)反射和动态代理(JDK Proxy和Cglib)
反射和动态代理放有一定的相关性,但单纯的说动态代理是由反射机制实现的,其实是不够全面不准确的,动态代理是一种功能行为,而它的实现方法有很多.要怎么理解以上这句话,请看下文. 一.反射 反射机制是 Ja ...
- throwable四参构造_深入分析Java反射(四)-动态代理
动态代理的简介 Java动态代理机制的出现,使得Java开发人员不用手工编写代理类,只要简单地指定一组接口及委托类对象,便能动态地获得代理类.代理类会负责将所有的方法调用分派到委托对象上反射执行,在分 ...
最新文章
- 云从完成超过18亿元新一轮融资,加快上市步伐
- linux下vi命令大全[转]
- 保定linux第一版PPT-SVN for Linux
- gorm物理删除:unscoped用法
- Debian Gnu/Linux 9关闭 111端口
- 操作系统上机题目(多线程2)
- 【CF#706B】 Interesting drink (二分)
- Caret模型训练和调参更多参数解读(2)
- 安装ISE.14.7后仿真时遇到的问题与解决
- 基于c语言中调试工具的用法汇总(不包含gdb)【转】
- python文本聚类dbscan_文本挖掘之文本聚类(DBSCAN)
- CREO学习笔记【钣金结构中常用的标准件】
- 基于阿里云产品和开源Hudi结合
- python自动批量发邮件脚本_python自动发送邮件脚本
- 记一次跟突破360主机卫士上传
- 联想小新安装windows 7
- 猿创征文|国产数据库[StarRocks]实战学习
- 几个简单的数据点平滑处理算法
- zookeeper读取配置文件失败
- Android模仿手机京东商城实训小项目(含源码)