网站首页 > java教程 正文
一、实现jdk动态代理需要的条件:
1.目标类(明星||房东||UserDaoImpl)需要有接口
2.代理类不需要和目标类实现同一个接口
3.代理类需要维护一个目标对象的引用,并作为参数,构建一个有参构造函数
4.通过jdk提供Proxy对象来动态创建代理对象..
通过调用Proxy对象的newProxyInstance()方法可以动态创建一个代理对象,需要三个参数:
1.目标对象的类加载器(固定写法)
2.目标对象实现的接口
3.InvocationHandler的对象
两种方式:
1.可以写一个匿名类
new InvocationHandler() >> 实现invoke方法
当目标对象的方法执行之前,会触发这个invoke方法
invoke方法的参数:
1.将要生成的代理对象(注意,不要去调用这个对象)
2.目标对象正在执行的方法
3.目标对象正在执行的方法的参数
5.不用匿名类的方式:
代理类工厂需要实现InvocationHandler接口
然后去实现invoke方法
在Proxy.newProxyInstance()方法的第三个参数传入this;
二、代码演示
1创建一个接口:UserDao.java
2、创建UserDaoImpl实现UserDao接口:UserDaoImpl.java
3、创建代理类:UserDaoproxyFactory.java
4、测试类:Client.java
5、测试结果:
感谢你长得那么美还来看小编的文章,喜欢就点关注和转载哦!
猜你喜欢
- 2024-10-04 Java中代理的理解及其实现方式(1)- 静态代理
- 2024-10-04 Java三种代理模式:静态代理、动态代理和cglib代理
- 2024-10-04 Java 学习笔记--反射与代理机制(静态、动态)
- 2024-10-04 Java的动态代理如何实现?#程序员(java动态代理有什么用)
- 2024-10-04 Java动态代理与静态代理以及它能为我们做什么
- 2024-10-04 Java - 动态代理实现原理以及ASM技术
- 2024-10-04 深入理解Java反射和动态代理(jdk动态代理和反射)
- 2024-10-04 java手把手教你写动态代理和静态代理的实现
- 2024-10-04 Java动态代理简单介绍(java动态代理的两种方式)
- 2024-10-04 Java核心技术点之动态代理(java动态代理实现三种方式)
你 发表评论:
欢迎- 06-15Linux中如何通过Shell脚本来控制Spring Boot的Jar包启停服务?
- 06-15推荐一款超棒的SpringCloud 脚手架项目
- 06-15IDEA将项目打包成jar包(idea打包普通java项目)
- 06-15Spring Boot3 项目 jar 包打包成 Docker 镜像全攻略
- 06-15记录Dockerfile将jar包构建成部署所需的镜像
- 06-15项目基础部署汇总八---linux下xxl-job安装
- 06-15Spring Boot Jar 包秒变 Docker 镜像实现多环境部署
- 06-15终端执行 java -jar example.jar 时报错:“没有主清单属性” 的解决
- 最近发表
-
- Linux中如何通过Shell脚本来控制Spring Boot的Jar包启停服务?
- 推荐一款超棒的SpringCloud 脚手架项目
- IDEA将项目打包成jar包(idea打包普通java项目)
- Spring Boot3 项目 jar 包打包成 Docker 镜像全攻略
- 记录Dockerfile将jar包构建成部署所需的镜像
- 项目基础部署汇总八---linux下xxl-job安装
- Spring Boot Jar 包秒变 Docker 镜像实现多环境部署
- 终端执行 java -jar example.jar 时报错:“没有主清单属性” 的解决
- 如何将本地JAR文件添加到Maven项目中
- Java 类隔离应用:多 Jar 包支持(java接口隔离原则)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)