jdk动态代理,cglib代理
jdk动态代理
interface TargetInterface {public void method();
}class Target implements TargetInterface {@Overridepublic void method() {System.out.println("Target running....");}
}class Target1{private Object target;public Target1(Object target) {this.target = target;}public Object getProxy(){/*newProxyInstance():创建一个代理实例其中有三个参数:1、classLoader:加载动态生成的代理类的类加载器2、interfaces:目标对象实现的所有接口的class对象所组成的数组3、invocationHandler:设置代理对象实现目标对象方法的过程,即代理类中如何重写接口中的抽象方法*/ClassLoader classLoader = target.getClass().getClassLoader();Class<?>[] interfaces = target.getClass().getInterfaces();InvocationHandler invocationHandler = new InvocationHandler() {@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {/*proxy:代理对象method:代理对象需要实现的方法,即其中需要重写的方法args:method所对应方法的参数*/System.out.println("前置");Object invoke = method.invoke(target, args);System.out.println("后置");return invoke;}};return Proxy.newProxyInstance(classLoader,interfaces,invocationHandler);}public static void main(String[] args) {Target1 target1 = new Target1(new Target());TargetInterface proxy = (TargetInterface) target1.getProxy();proxy.method();}
}
cglib代理
class Target2 {public void method() {System.out.println("Target running....");}
}class cglib {public static void main(String[] args) {Target2 target2 = new Target2();Enhancer enhancer = new Enhancer();enhancer.setSuperclass(Target2.class);enhancer.setCallback(new MethodInterceptor() {@Overridepublic Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {System.out.println("前置");Object invoke = method.invoke(target2, objects);return invoke;}});Target2 proxy = (Target2) enhancer.create();proxy.method();}
}
jdk动态代理,cglib代理相关推荐
- 代理模式——静态代理,动态代理(JDK代理和CGLib代理)
概述 由于某些原因需要给某对象提供一个代理以控制对该对象的访问. 这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介. Java中的代理按照代理类生成时机不同又分为 ...
- Spring源码深度解析(郝佳)-学习-jdk代理-cglib代理
在java中目前主要使用的是jdk代理和cglib代理,这两种代理是Spring AOP的精髓所在,不过在理解Spring AOP之前,先来看看这两种代理的使用. 1. jdk代理使用示例 创建业务接 ...
- Spring AOP中的JDK代理和Cglib代理
JDK动态代理是java JDK自身提供的基于接口的代理,代理类的生成速度快,而代理类的运行速度慢,适合于prototype类型 Cglib代理是基于之类继承的方式的代理,能代理非基于接口的类,适合于 ...
- 设计模式-代理模式(jdk代理和cglib代理详解)
说起代理模式,相信很多人早已经很理解,但对于我这个菜鸟,理解的可能还是不到位,写一次博客加深印象. 什么是代理模式呢?代理模式是常用的Java设计模式,它的特征是代理类与委托类有同样的接口,代理类主要 ...
- aop实现原理-动态代理CGLib代理
那接下来的话,那咱们Spring当中,这个AOP,咱们先说概念,咱们先不写具体代码,咱们就是聊,聊Spring的AOP,Spring能帮我们干啥呢,我告诉你,Spring他作为对象的容器,Spring ...
- 静态代理,动态代理,Cglib代理详解
一.静态代理 新建一个接口 定义一个玩家方法: package com."".proxy.staticc;public interface Iplayer { public voi ...
- 第八章Jdk代理 cglib代理
什么是代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能. 这 ...
- 利用代码分别实现jdk动态代理和cglib动态代理_代理模式实现方式及优缺点对比...
作者:爱宝贝丶来源:https://my.oschina.net/zhangxufeng/blog/1633187 代理模式最典型的应用就是AOP,本文结合主要讲解了代理模式的几种实现方式:静态代理和 ...
- 4、MyBatis + Log4j日志查看Sql参数、结果集元数据、Mapper代理开发、JDK的动态代理与CGLib代理
文章目录 MyBatis优化开发 日志 ResultSet如何转换为Java对象 数据库元数据 结果集元数据 Fastjson 基于MyBatis的DAO开发(传统) 推荐mapper代理开发 JDK ...
- JDK动态代理和CGLIB动态代理的异同
代理模式的概念和静态代理之前的文章已经说过了,没看过的可以点这里. 动态代理意义在于生成一个占位(又称为代理对象),用来代理真实的对象,来控制真实对象的访问. 举个例子,现在有一家软件公司,公司里面有 ...
最新文章
- JavaScript document write String content writes nothing o
- [caffe]深度学习之CNN检测object detection方法摘要介绍
- 中国水泥电杆市场全景调研及发展战略研究报告2022-2028年版
- 厚积薄发,丰富的公用类库积累,助你高效进行系统开发(2)(转)
- 【CentOS Linux 7】实验1【VMware安装、新建虚拟机;63个基础命令运行结果图】
- 计算机七个计算原理,计算机组成原理计算题(7页)-原创力文档
- 【C语言及程序设计】项目2-15:模块化的简单银行系统设计
- Rider IDE恢复了对.NET Core调试的支持
- 宝马奥迪工厂模式_宝马的完整形式是什么?
- 免费的React课程,通过构建聊天应用程序来提高您的React JS技能
- python token api_python接口自动化之token登录
- APP审核关于3.2.1金融资格的审核回复苹果
- 基于 GMDSS 的电子海图定位仿真研究
- cannot import name 'NPCAP_PATH'
- python get请求下载excel_用Python下载Sharepoint Excel文件
- C++2048Consose程序
- 《java语言程序设计》泽勒一致性问题
- vue h5端实现富文本图片预览(基于 Vant 的 ImagePreview 组件)
- 视频服务器(4) webrtc-streamer(windows下卡住了)
- AE插件:能量激光描边光效特效Saber Mac