关于java的一个典型的动态代理
2019独角兽企业重金招聘Python工程师标准>>>
今天看书的一个过程中,看到一个动态代理看下代码
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;public class DynamicProxy {public static void testDynamicProxy(){Calculator calculator = new CalculatorImpl();LogHandler lh = new LogHandler(calculator);Calculator proxy = (Calculator)Proxy.newProxyInstance(calculator.getClass().getClassLoader(), calculator.getClass().getInterfaces(), lh); //注意这里的调用方式proxy.add(1, 1);}public static void main(String[] args){testDynamicProxy();}}interface Calculator{int add(int a,int b);
}class CalculatorImpl implements Calculator{public int add(int a,int b){return a+b;}
}class LogHandler implements InvocationHandler {Object o;LogHandler(Object o){this.o = o;}public Object invoke(Object proxy, Method method, Object[] args) //这里使用了反射的机制,具体这里的method要看上面的proxy具体调用的方法throws Throwable {this.doBefore();Object o = method.invoke(proxy, args);this.doAfter();return o;}public void doBefore(){System.out.println("do this before");}public void doAfter(){System.out.println("do this after");}}
这里的好处是,能够在位置类的作用下调用需要使用类型,好处是只需要一个类可以处理多类型
转载于:https://my.oschina.net/u/268957/blog/511360
关于java的一个典型的动态代理相关推荐
- 笔试题:写一个ArrayList 的动态代理类
package com.zhangxueliang.demo;import java.lang.reflect.InvocationHandler; import java.lang.reflect. ...
- java中的静态、动态代理模式以及Spring中的CgLib动态代理解读(面试必问)
java中的静态.动态代理模式以及Spring中的CgLib动态代理解读(面试必问) 静态代理 动态代理 CgLib动态代理 基础知: 反射知识 代理(Proxy)是一种设计模式,提供了对目标 ...
- Java基础加强-(注解,动态代理,类加载器,servlet3.0新特性)
1. Annotation注解 1.1. Annotation概述 Annotation是JDK 5.0以后提供对元数据的支持,可以在编译.加载和运行时被读取,并执行相应的处理.所谓Annota ...
- Java 进阶(三)动态代理
文章目录 Java 进阶(三)动态代理 代理模式 定义 作用 静态代理 动态代理 Java 进阶(三)动态代理 要想学习动态代理,首先我们得了解一下代理模式. 代理模式 定义 代理模式给某一个对象提供 ...
- 一个简单 JDK 动态代理的实例
动态代理的步骤: 创建一个实现了 InvocationHandler 接口的类,必须重写接口里的 invoke()方法. 创建被代理的类和接口 通过 Proxy 的静态方法 newProxyInsat ...
- Java—反射机制实战及动态代理总结
关注微信公众号:CodingTechWork,一起学习进步. 引言 反射在Java技术应用中是老生常谈的事了,我们每次都是知道个皮毛,这个反射可以动态获取类的信息,比如类的属性和方法,但是在平时疯 ...
- Java大数据-反射和动态代理
反射的概念: Java反射机制,是说在运行时刻,对于任何一个类,都能够知道它的所有属性和方法:对任意一个对象,都能够调用它的任意方法和属性:这种动态获取信息以及动态调用方法的功能称为java的反射机制 ...
- python ip动态代理_给自己的爬虫做一个简单的动态代理池
使用代理服务器一直是爬虫防BAN最有效的手段,但网上的免费代理往往质量很低,大部分代理完全不能使用,剩下能用的代理很多也只有几分钟的寿命,没法直接用到爬虫项目中. 下面简单记录一下我用scrapy+r ...
- Java 面试必考题:动态代理
前天下午 2 点,坐标西二旗,某一线互联网大厂,面试官问:请讲讲什么是代理?什么是动态代理?什么是 ASM?面对连珠炮的问题,我闯了两关,但没能通关,只能回去等通知了. 回去不吃饭不睡觉,不断总结 J ...
最新文章
- 你的 webpack 也需要休息,让你的 webpack 拒绝 996ICU
- Mybatis各种模糊查询
- 运行iDT算法代码及后续特征编码
- 二叉查找树的插入,删除,查找
- python列表嵌套字典取值_我的 python 学习历程-Day05 字典/字典的嵌套
- 适合 Python 入门的 8 款强大工具,赶紧收藏一波!
- 【转】ZooKeeper详细介绍和使用第一节
- 扫地机自动回充揭秘 之开启篇
- 生活随笔: 毕业之前和毕业之后
- 中兴echat_中兴高达震撼发布12款新品 助力专网行业融合发展
- Java语言程序设计与数据结构(基础篇)原书第11版
- PHP函数array_intersect_ukey
- cad卸载不干净_流氓软件卸载不干净?强烈推荐这个工具:Uninstall Tool
- 智能开关双控实现方法(附电路图)
- 基于SSM框架的实验室设备管理系统
- 7、万国觉醒建筑白天黑夜效果(Shader Graph)
- 线性代数学习笔记——第四十一讲——n维向量空间的子空间
- [JZOJ4949]仙人球
- html中div的覆盖,CSS中如何使div覆盖另一个div的实例
- canvas-随机粒子特效
热门文章
- sql 使用identity(int,1,1)来产生行号。
- 无数优秀投资人的选择——GMQ Group
- linux 查找目录或文件详解
- SQL2008安装后激活方式以及提示评估期已过解决方法(转)
- Sql查询一个表中除了某个字段以外的所有字段的方法
- Flash Builder 4快速入门----学习笔记
- 防用户误删除,耗费一周时间把DeleteMark标志都加上来了,所有的删除操作从“物理删除”转为“逻辑删除”...
- 跳车开发者Pokkst自述——从BTC到BCH
- BCH三小时缓慢出块——需要重视的小概率事件
- BTC跟跌黄金,BCH领涨主流 2019.8.14