动态代理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的源码吧~
总结
拙技蒙斧正,不胜雀跃。