对目标方法实现前置或者后置增强,
是在程序动态运行时加入增强方法的。

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实现动态代理相关推荐

  1. JDK动态代理和Cglib的动态代理

    2019独角兽企业重金招聘Python工程师标准>>> 最简单的是静态代理方法,即代理模式,这里就不多啰嗦了.. 重点说一下JDK的动态代理和Cglib的动态代理吧 先说JDK的,需 ...

  2. ​cglib实现动态代理构建带参数的代理实例

    2019独角兽企业重金招聘Python工程师标准>>> cglib实现动态代理构建带参数的代理实例: package com.carl.test.proxy.cglib;import ...

  3. jdk中的动态代理和cglib中动态代理的区别

    jdk中动态代理: 要求目标对象必须实现了某个接口. 代理对象和目标对象要想实现相同的功能,在底层的表现是代理对象和目标对象实现了相同的接口,因此获取代理对象后(Object类型),应该向下转型为目标 ...

  4. Java使用Proxy和CGLib实现动态代理

    在java中对一个方法进行改造有几种方法可以实现,分别是最常用的继承(extends).动态代理和装饰者模式.继承是最简单也是用的最多的方法,但是还是有一些场景不适用,这个时候就可能会用到动态代理.使 ...

  5. Java之jdk和CGLib实现动态代理

    1 jdk实现动态代理源码实现 这里需要用到InvocationHandler接口 public interface Hello {public void sayHello(); } public c ...

  6. 代理模式:aspectj静态代理和jdk,cglib的动态代理的对比

    1.使用jdk的动态代理来增强接口实现类. 原理:使用Proxy类的newProxyInstance方法运行期通过反射动态的生成代理对象 优点:不需要修改具体的业务代码,动态的增强方法,降低耦合性. ...

  7. jdk与cglib的动态代理

    JDK动态代理中包含一个类和一个接口:  InvocationHandler接口:  public interface InvocationHandler {  public Object invok ...

  8. 使用CGLib实现动态代理

    一.背景     在上一篇博客中(java动态代理:http://blog.csdn.net/wenhuayuzhihui/article/details/51700670)提到,java的动态代理是 ...

  9. 利用CGLib实现动态代理实现Spring的AOP

    当我们用Proxy 实现Spring的AOP的时候, 我们的代理类必须实现了委托类的接口才能实现. 而如果代理类没有实现委托类的接口怎么办? 那么我们就可以通过CGLib来实现 package cn. ...

最新文章

  1. Java语言中的生僻知识
  2. python pandas dataframe 列 转换为离散值
  3. mysql 分组排序_Python、PowerBI、Excel、MySQL,都能做?搞清楚数据聚合与分箱
  4. matlab-代数方程
  5. 何晓群pdf 应用回归分析第五版_暨南社会学论坛|未成年人司法中的法律实证与统计应用:多元回归分析(第三期)...
  6. 服务器系统怎么写,服务器操作系统语言写的
  7. SuSE 11 安装mysql 5.6.35步骤
  8. 智能优化算法:学生心理学优化算法 -附代码
  9. java怎么定义scanner_Java Scanner类的常用方法及用法(很详细)
  10. Office批量打印助手(Excel 批量打印、Word 批量打印)
  11. excel取整数的函数_EXCEL的知识考点
  12. 主流PC浏览器使用的内核
  13. 阿里巴巴商家使用频率最多的数据接口分享
  14. 商家又一必争之地!支付宝小程序一周年,带来哪些机遇?
  15. Matlab滤波器设计示例
  16. 【数据库系统】数据库编程
  17. HTML5期末大作业:旅游出行网站设计——武汉旅游(11页) HTML+CSS+JavaScript dreamweaver作业静态HTML网页设计模板
  18. 亲历5.12汶川大地震----杨大伟作为志愿者14日奔赴汶川等地抗震救灾
  19. 致运营:你与年薪50万之间只隔了一个商业分析
  20. 推荐本地远程连接服务器软件 | Xshell 和 Xftp 安装

热门文章

  1. 前端学习(591):source面板介绍
  2. 第十八期:网页禁止复制粘贴怎么办?教你六招轻松搞定
  3. 玩转oracle 11g(4):连接,文件操作,交互命令
  4. 实例33:python
  5. vue设置页面标题title
  6. CSS之Responsive网页设计的三个特性
  7. bzoj 3173 最长上升子序列
  8. redis启动警告解决
  9. Python基础44(PyMySQL模块)
  10. 算法前戏 递归 二分查找 列表查找