JAVA基础:动态代理cglib原理(一)源码准备

动态代理cglib原理


前言

CGLIB是一个强大、高性能的字节码生成库。使用CGLib实现动态代理,完全不受代理类必须实现接口的限制,而且CGLib底层采用ASM字节码生成框架,使用字节码技术生成代理类,比使用Java反射效率要高。需要注意的是,CGLib不能对声明为final的方法进行代理,因为CGLib原理是动态生成被代理类的子类。

概念性的东西就不多贴了,总之作为SpringBoot AOP实现底层原理其重要性不言而喻了。

然鹅,在工作中发现,工作好多年的都不知道怎么阅读源码,让人着实很惊讶,大佬可以移步了。本篇只是教大家怎么阅读源码,源码都不会阅读那就不用扯什么原理了,后面再分析CGLib的实现原理,毕竟授之以鱼不如授之以渔么。


一、效果展示

在这里插入图片描述
可以看到我们可以在源码包中“net.sf.cglib.proxy”的MethodProxy类写注释了。

二、实现方式

在日常工作中,有时候我们想学习下框架原理,Debug代码流程走到jar包源码中,想写下备注以供日后快速回忆学习,但是jar包中源码写不了备注,我们应该怎么搞?比如作者想看下cglib实现原理,想要追下其实现原理,看下其生成的字节码,下面教入门级方式了…
首先下载要学习的源码,就CGLib而言,怎么下载呢,地址:http://www.java2s.com/Code/Jar/c/cglib.htm
在这里插入图片描述
选择需要的版本,下载。

1.将sources.zip进行解压

在这里插入图片描述

2.将sources.jar进行解压

在这里插入图片描述

3.取源码包

在这里插入图片描述

4.创建maven项目

将net包贴进去
在这里插入图片描述

5.补Pom依赖

这步略微恶心人,因为要知道cglib依赖关系。
在这里插入图片描述

6.增加运行环境配置

针对cglib想要看其生成的字节码,我们需要配置下idea运行配置。

Dcglib.debugLocation=…

在这里插入图片描述
经过如上参数配置我们就能看到生成的字节码文件了。
在这里插入图片描述
下篇我们就可以愉快的分析源码了。

三、作业

赶紧动手操作下Mybatis的源码吧~


总结

拙技蒙斧正,不胜雀跃。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值