一.自定义创建一个类JdkProxyFactory

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;/*** * TODO 通过工厂生成代理对象* 2018年10月10日下午6:42:00*/
public class JdkProxyFactory {//成员变量private Object target;//被代理的对象//使用有参数的构造方法设置代理对象 public JdkProxyFactory(Object target){this.target = target;}public Object getProxyObject(){return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), new InvocationHandler() {public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println("开始代理"); //增强实现Object result = method.invoke(target, args);System.out.println("代理结束"); //增强实现return result;}});}
}

测试:

代码执行后会把增强部分加进来;

/*** * TODO** 2018年10月10日下午6:41:24*/
public class CustomerServiceImpl implements ICustomerService {@Overridepublic void save() {System.out.println("客户保存了。。。。。");}@Overridepublic int find() {System.out.println("客户查询数量了。。。。。");return 100;}}
/*** * TODO** 2018年10月10日下午6:46:37*/
public class Test {public static void main(String[] args) {ICustomerService customerService = new CustomerServiceImpl();//customerService.save();//利用代理对象工厂生成一个代理对象JdkProxyFactory factory = new JdkProxyFactory(customerService);Object obj = factory.getProxyObject();ICustomerService service = (ICustomerService)obj;service.save();System.out.println("------------------");UserService userService = new UserServiceImpl();//userService.save();factory = new JdkProxyFactory(userService);obj = factory.getProxyObject();userService = (UserService)obj;userService.save();}}

Proxy动态代理代码示例相关推荐

  1. JDK和cglib动态代理代码示例

    JDK和cglib动态代理代码: package com.zhangxueliang.demo.proxy;import java.lang.reflect.InvocationHandler; im ...

  2. jdk、cglib动态代理代码示例

    文章目录 jdk动态代理 实现步骤 代码示例 新建一个接口 新建一个接口的实现类 新建一个代理类 调用测试 cglib动态代理实现 实现步骤 创建一个实现类 新建一个代理类 调用测试 jdk动态代理 ...

  3. Proxy 动态代理 InvocationHandler CGLIB MD

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

  4. 动态代理案例1:运用Proxy动态代理来增强方法

    动态代理案例1: /*要求:运用Proxy动态代理来增强方法 题目:     1.定义接口Fruit,其中有addFruit方法     2.定义实现类FruitImpl,实现Fruit接口     ...

  5. Java动态代理代码快速上手

    动态代理的两个核心的点是:代理的行为 和 代理机构. 举个例子,上大学的时候,很多同学吃午饭的时候都是叫别人带饭,有一个人H特别热心肠,想了一个办法,他在门口挂了个公示牌,每天有谁想要找人带饭就写公告 ...

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

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

  7. 动态代理——CGLIB动态代理原理示例解析

    觉得可以的话点个关注,转个发呗,陆续奉上干货~~~~ 前文我们讲解了JDK动态代理的原理(动态代理--JDK动态代理原理),今天我们来看看CGLIB动态代理是如何实现,最后我们总结下JDK动态代理和C ...

  8. spring中的CGLIB动态代理(代码)

    因为jdk带来具有局限性,使用动态代理的对象必须实现一个或多个接口,CGLIB代理不需要实现接口 UserDao.java目标类: package com.liu.cglib;//目标类 public ...

  9. spring中的jdk动态代理(代码步骤)

    UserDao.java接口: package com.liu.jdk;public interface UserDao {public void addUser();public void dele ...

最新文章

  1. 学习PCL库你应该知道的C++特性
  2. CentOS修改yum源为阿里云
  3. app pay开发遇到的坑
  4. 远程桌面无法找到计算机不属于指定网络,远程桌面找不到计算机
  5. 华为手机如何固定横屏_华为手机如何录屏?原来方法这么简单,手把手教你学会...
  6. Docker 从入门到掉坑
  7. 演练 网站的头部导航栏的制作 1014 HTML
  8. JavaTPoint Java 中文教程【翻译完成】
  9. 资深前端工程师:裁人后,我总结了 7 个必备技能
  10. Mysql命令行改动字段类型
  11. 发布一款小软件:和讯博客助手-测试版- 0.3.0
  12. Qt对话框与窗口的关闭和隐藏(QCloseEvent、Qt::WA_DeleteOnClose属性、Qt::WA_QuitOnClose属性)
  13. VS2008 Pocket PC 2003 SE仿真程序上网设置
  14. keep-alive实现原理
  15. swf转gaf使用方法
  16. docx行间距怎么设置_Word行间距怎么调?Word调行间距的方法
  17. 3D大型网络游戏腐竹制作教程
  18. 谷歌浏览器被2345,hao123,搜狗劫持解决办法
  19. 时间继电器应该怎么选型
  20. 清空UIWebView历史网页

热门文章

  1. VisualStudio2005技巧集合--打造自己的CodeSnippet
  2. HDFS 读取、写入、遍历文件夹获取文件全路径、append
  3. python pdf转word
  4. windows server2012在已有.net4.5框架的基础上安装.net3.5的方法
  5. linux下 mysql5.5数据库迁移操作
  6. 1 MySQL 主从同步
  7. linux、window中源码安装maven
  8. python基础—正则表达式即re模块
  9. zabbix使用ipv6地址监控snmp客户端
  10. Linux上通过SUU更新Dell服务器固件