cglib实现动态代理
对目标方法实现前置或者后置增强,
是在程序动态运行时加入增强方法的。
1. 目标类
package com.lovely.proxy.cglib;/*** 目标类* @author echo lovely* @date 2020/7/26 15:20*/
public class Target {public void save() {System.out.println("sve running...");}
}
2. 增强类
package com.lovely.proxy.cglib;/*** 增强类 拿before和afterReturning对Target中save方法增强* @author echo lovely* @date 2020/7/26 15:20*/
public class Advice {public void before() {System.out.println("前置增强...");}public void afterReturning() {System.out.println("后置增强...");}}
3. 测试demo
package com.lovely.proxy.cglib;import org.springframework.cglib.proxy.Enhancer;
import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.cglib.proxy.MethodProxy;import java.lang.reflect.Method;/*** cglib test* @author echo lovely* @date 2020/7/26 15:18*/
public class ProxyText {public static void main(String[] args) {// 创建目标类final Target target = new Target();// 增强类final Advice advice = new Advice();// 1 创建增强器Enhancer enhancer = new Enhancer();// 2 设置父类(目标类)enhancer.setSuperclass(target.getClass());// 3 设置回调enhancer.setCallback(new MethodInterceptor() { // 方法拦截器public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {advice.before(); // 方法增强Object returnValue = method.invoke(target, objects); // 调用目标方法advice.afterReturning(); // 后置方法return returnValue;}});// 4 创建代理对象Target proxy = (Target) enhancer.create();proxy.save();}}
cglib实现动态代理相关推荐
- JDK动态代理和Cglib的动态代理
2019独角兽企业重金招聘Python工程师标准>>> 最简单的是静态代理方法,即代理模式,这里就不多啰嗦了.. 重点说一下JDK的动态代理和Cglib的动态代理吧 先说JDK的,需 ...
- cglib实现动态代理构建带参数的代理实例
2019独角兽企业重金招聘Python工程师标准>>> cglib实现动态代理构建带参数的代理实例: package com.carl.test.proxy.cglib;import ...
- jdk中的动态代理和cglib中动态代理的区别
jdk中动态代理: 要求目标对象必须实现了某个接口. 代理对象和目标对象要想实现相同的功能,在底层的表现是代理对象和目标对象实现了相同的接口,因此获取代理对象后(Object类型),应该向下转型为目标 ...
- Java使用Proxy和CGLib实现动态代理
在java中对一个方法进行改造有几种方法可以实现,分别是最常用的继承(extends).动态代理和装饰者模式.继承是最简单也是用的最多的方法,但是还是有一些场景不适用,这个时候就可能会用到动态代理.使 ...
- Java之jdk和CGLib实现动态代理
1 jdk实现动态代理源码实现 这里需要用到InvocationHandler接口 public interface Hello {public void sayHello(); } public c ...
- 代理模式:aspectj静态代理和jdk,cglib的动态代理的对比
1.使用jdk的动态代理来增强接口实现类. 原理:使用Proxy类的newProxyInstance方法运行期通过反射动态的生成代理对象 优点:不需要修改具体的业务代码,动态的增强方法,降低耦合性. ...
- jdk与cglib的动态代理
JDK动态代理中包含一个类和一个接口: InvocationHandler接口: public interface InvocationHandler { public Object invok ...
- 使用CGLib实现动态代理
一.背景 在上一篇博客中(java动态代理:http://blog.csdn.net/wenhuayuzhihui/article/details/51700670)提到,java的动态代理是 ...
- 利用CGLib实现动态代理实现Spring的AOP
当我们用Proxy 实现Spring的AOP的时候, 我们的代理类必须实现了委托类的接口才能实现. 而如果代理类没有实现委托类的接口怎么办? 那么我们就可以通过CGLib来实现 package cn. ...
最新文章
- Java语言中的生僻知识
- python pandas dataframe 列 转换为离散值
- mysql 分组排序_Python、PowerBI、Excel、MySQL,都能做?搞清楚数据聚合与分箱
- matlab-代数方程
- 何晓群pdf 应用回归分析第五版_暨南社会学论坛|未成年人司法中的法律实证与统计应用:多元回归分析(第三期)...
- 服务器系统怎么写,服务器操作系统语言写的
- SuSE 11 安装mysql 5.6.35步骤
- 智能优化算法:学生心理学优化算法 -附代码
- java怎么定义scanner_Java Scanner类的常用方法及用法(很详细)
- Office批量打印助手(Excel 批量打印、Word 批量打印)
- excel取整数的函数_EXCEL的知识考点
- 主流PC浏览器使用的内核
- 阿里巴巴商家使用频率最多的数据接口分享
- 商家又一必争之地!支付宝小程序一周年,带来哪些机遇?
- Matlab滤波器设计示例
- 【数据库系统】数据库编程
- HTML5期末大作业:旅游出行网站设计——武汉旅游(11页) HTML+CSS+JavaScript dreamweaver作业静态HTML网页设计模板
- 亲历5.12汶川大地震----杨大伟作为志愿者14日奔赴汶川等地抗震救灾
- 致运营:你与年薪50万之间只隔了一个商业分析
- 推荐本地远程连接服务器软件 | Xshell 和 Xftp 安装