2019独角兽企业重金招聘Python工程师标准>>>

动态代理可以做什么?比如说spring的AOP,它就是以动态代理为基础实现的,AOP拦截需要的请求,然后通过代理把请求的结果返回到AOP代理类中,在代理类里就可以做很多自己想要做的事情,比如日志记录,请求参数记录等

首先动态代理需要三个实现类,一个测试类

接口HelloInterface

接口实现类HelloInterfaceImpl

动态代理类HelloDynamicProxy

测试类HelloTest

代码具体实现

  • HelloInterface

/*** Created by liuhj on 2015/12/28.*/
public interface HelloInterface {public void say();
}

HelloInterfaceImpl

/*** Created by liuhj on 2015/12/28.*/
public class HelloInterfaceImpl implements HelloInterface {@Overridepublic void say() {System.out.println("Hello");}
}

HelloDynamicProxy

要实现InvocationHandler接口

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy; public class HelloDynamicProxy implements InvocationHandler{private Object target;  /** * @param target * @return */  public Object bind(Object target) {  this.target = target;  return Proxy.newProxyInstance(target.getClass().getClassLoader(),  target.getClass().getInterfaces(), this);    }  @Override  /** *  */  public Object invoke(Object proxy, Method method, Object[] args)  throws Throwable {  Object result=null;  System.out.println("BEGIN");  result=method.invoke(target, args);  System.out.println("END");  return result;  }
}

HelloTest


public class TestProxy {  public static void main(String[] args) {  HelloDynamicProxy proxy = new HelloDynamicProxy();  HelloInterface helloProxy = (HelloInterface) proxy.bind(new HelloInterfaceImpl());  helloProxy.say();  }  }

输出结果

BEGIN
Hello
END

到此结束了

动态代理和静态代理的区别就是代理中,静态代理是以组合的方式注入到代理类,动态代理则是以反射机制注入到代理类。

才疏学浅,如有错误敬请指出,谢谢。

转载于:https://my.oschina.net/u/2519530/blog/552184

Java代理系列-动态代理相关推荐

  1. Java基础:动态代理

    系列阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 概述 在运行时,动态创建一组指定的接口的实现类对象(代理对象)! 代理是实现AOP(面向切面编程)的核 ...

  2. 浅谈Java和SAP ABAP的静态代理和动态代理,以及ABAP面向切面编程的尝试

    文章目录 Java的静态代理 静态代理的优缺点 ABAP的静态代理 Spring AOP的动态代理 JDK动态代理的优缺点 CGLIB动态代理的优缺点 ABAP CGLIB的模拟实现 ABAP Pre ...

  3. java静态代理与动态代理

    2019独角兽企业重金招聘Python工程师标准>>> 代理模式是java常见的设计模式.其目的是为其他对象提供一个代理以控制对某个真实对象的访问.通过代理类这一中间层,有效控制对真 ...

  4. 【java项目实战】代理模式(Proxy Pattern),静态代理 VS 动态代理

    这篇博文,我们主要以类图和代码的形式来对照学习一下静态代理和动态代理.重点解析各自的优缺点. 定义 代理模式(Proxy Pattern)是对象的结构型模式,代理模式给某一个对象提供了一个代理对象,并 ...

  5. Java、Android静态代理与动态代理

    代理 (1) 什么是代理? 大道理上讲代理是一种软件设计模式,目的地希望能做到代码重用.具体上讲,代理这种设计模式是通过不直接访问被代理对象的方式,而访问被代理对象的方法.这个就好比 商户----&g ...

  6. Java设计模式学习06——静态代理与动态代理(转)

    原地址:http://blog.csdn.net/xu__cg/article/details/52970885 一.代理模式 为某个对象提供一个代理,从而控制这个代理的访问.代理类和委托类具有共同的 ...

  7. java静态代理与动态代理简单分析

    原创作品,可以转载,但是请标注出处地址http://www.cnblogs.com/V1haoge/p/5860749.html 1.动态代理(Dynamic Proxy) 代理分为静态代理和动态代理 ...

  8. 【设计模式】代理模式 ( 动态代理 | 模拟 Java 虚拟机生成对应的 代理对象 类 )

    文章目录 前言 一.模拟 JVM 生成对应的 代理对象 二.模拟 JVM 生成对应的 代理对象 完整流程展示 1.目标对象接口 2.被代理对象 3.调用处理程序 4.模拟 JVM 生成的代理对象类 5 ...

  9. 吃透Java中的动态代理

    动态代理在Java中是很重要的一部分,在很多框架中都会用到,如Spring中的AOP.Hadoop中的RPC等.为此在这把我对Java中的动态代理的理解分享给大家,同时写了一个模拟AOP编程的实例.( ...

最新文章

  1. Java 学习(1) ---JDK安装和配置环境变量
  2. python功能分享_Python中非常实用的一些功能和函数分享
  3. AntiSamy测试
  4. 不断进化的分支和需求管理
  5. 2018java基础面试题(我自己用的,面试好多家公司基本会问到的问题和技术)
  6. hash hashcode变化_Web安全 | 没想到 Hash 冲突还能这么玩,你的服务中招了吗?
  7. 创建WPF单实例应用程序
  8. 好程序员web前端分享逻辑运算
  9. 构建之法 前三章读后感
  10. 拖拽实例 对于设置监听setInterval 的理解
  11. Linux基金会宣布行业进一步支持Akraino Edge Stack
  12. Android 10.0 PackageManagerService(四)APK安装流程-[Android取经之路]
  13. android 谷歌地图_Google天空地图可将您的Android手机变成数码望远镜
  14. win10联想软件商店壁纸的保存目录在哪
  15. 索爱E50收款蓝牙音箱,支持各种场合的商用收账音箱
  16. CityMaker学习教程02 软件的授权
  17. MCTP协议和NCSI
  18. 台达PLC ES系列与英威腾GD变频器通讯程序原创可直接用于生产的程序
  19. 要想成为一个成功人士最应该关注的东西
  20. ssm+jsp计算机毕业设计基于java的信访管理系统64esx(程序+lw+源码+远程部署).

热门文章

  1. JBoss关闭时报Failed to authenticate principal=null,...
  2. eslint vscode 自动格式化_Vue 入门系列第二期,开发环境与 ESLint 配置
  3. anki 插入表格_另一种把思维导图和excel表格放入anki的方式
  4. Deepmind“好奇心”强化学习新突破!改变奖励机制,让智能体不再“兜圈子”
  5. 我们学习效率为什么这么低?CMU和PITT的科学家利用BCI技术对此做了相关研究
  6. 实时检测神经振荡可实现行为相关的神经反馈
  7. seaborn系列 (12) | 增强箱图boxenplot()
  8. 三星玄龙MR头显评测:将成 Vive Pro 最大竞争对手?
  9. UE4蓝图中的AI行为树功能使用经验指南
  10. 把宝可梦搬到终端后,摸鱼也不会被老板发现了,收集对战玩法一应俱全|开源...