Proxy动态代理代码示例
一.自定义创建一个类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动态代理代码示例相关推荐
- JDK和cglib动态代理代码示例
JDK和cglib动态代理代码: package com.zhangxueliang.demo.proxy;import java.lang.reflect.InvocationHandler; im ...
- jdk、cglib动态代理代码示例
文章目录 jdk动态代理 实现步骤 代码示例 新建一个接口 新建一个接口的实现类 新建一个代理类 调用测试 cglib动态代理实现 实现步骤 创建一个实现类 新建一个代理类 调用测试 jdk动态代理 ...
- Proxy 动态代理 InvocationHandler CGLIB MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- 动态代理案例1:运用Proxy动态代理来增强方法
动态代理案例1: /*要求:运用Proxy动态代理来增强方法 题目: 1.定义接口Fruit,其中有addFruit方法 2.定义实现类FruitImpl,实现Fruit接口 ...
- Java动态代理代码快速上手
动态代理的两个核心的点是:代理的行为 和 代理机构. 举个例子,上大学的时候,很多同学吃午饭的时候都是叫别人带饭,有一个人H特别热心肠,想了一个办法,他在门口挂了个公示牌,每天有谁想要找人带饭就写公告 ...
- Java进阶 | Proxy动态代理机制详解
一.Jvm加载对象 在说Java动态代理之前,还是要说一下Jvm加载对象的过程,这个依旧是理解动态代理的基础性原理: Java类即源代码程序.java类型文件,经过编译器编译之后就被转换成字节代码.c ...
- 动态代理——CGLIB动态代理原理示例解析
觉得可以的话点个关注,转个发呗,陆续奉上干货~~~~ 前文我们讲解了JDK动态代理的原理(动态代理--JDK动态代理原理),今天我们来看看CGLIB动态代理是如何实现,最后我们总结下JDK动态代理和C ...
- spring中的CGLIB动态代理(代码)
因为jdk带来具有局限性,使用动态代理的对象必须实现一个或多个接口,CGLIB代理不需要实现接口 UserDao.java目标类: package com.liu.cglib;//目标类 public ...
- spring中的jdk动态代理(代码步骤)
UserDao.java接口: package com.liu.jdk;public interface UserDao {public void addUser();public void dele ...
最新文章
- 学习PCL库你应该知道的C++特性
- CentOS修改yum源为阿里云
- app pay开发遇到的坑
- 远程桌面无法找到计算机不属于指定网络,远程桌面找不到计算机
- 华为手机如何固定横屏_华为手机如何录屏?原来方法这么简单,手把手教你学会...
- Docker 从入门到掉坑
- 演练 网站的头部导航栏的制作 1014 HTML
- JavaTPoint Java 中文教程【翻译完成】
- 资深前端工程师:裁人后,我总结了 7 个必备技能
- Mysql命令行改动字段类型
- 发布一款小软件:和讯博客助手-测试版- 0.3.0
- Qt对话框与窗口的关闭和隐藏(QCloseEvent、Qt::WA_DeleteOnClose属性、Qt::WA_QuitOnClose属性)
- VS2008 Pocket PC 2003 SE仿真程序上网设置
- keep-alive实现原理
- swf转gaf使用方法
- docx行间距怎么设置_Word行间距怎么调?Word调行间距的方法
- 3D大型网络游戏腐竹制作教程
- 谷歌浏览器被2345,hao123,搜狗劫持解决办法
- 时间继电器应该怎么选型
- 清空UIWebView历史网页