Spring的最深处——ASM入门
Spring的最深处——ASM入门
Spring 就两个核心
一是AOP
二是IOC
具体来说,Spring的AOP,可以通过JDK的动态代理来实现,也可以通过CGLIB实现。其中,CGLib (Code Generation Library)是在ASM的基础上构建起来的(当然JDK Proxy也是一样的),所以,Spring AOP是间接的使用了ASM。(参考自Spring Framework Reference Documentation的8.6 Proxying mechanisms)。
ASM官网——
相关学习资料都可以在官网的User guide中文档找到。但是因为是全英文的,学习起来可能会有些难度
ASM入门
ASM不是什么的缩写,那名称是怎么来的呢?一般而言在c语言中通常会有一个asm类,约定俗成的在里面写一些汇编语言Assembly Language。
在2002年的时候,Eric Bruneton、Romain Lenglet和Thierry Coupaye发表了一篇文章,名为《ASM: a code manipulation tool to implement adaptable systems》。在这篇文章当中,他们提出了ASM的设计思路。
一般来说,大写字母的组合,可能是多个单词的缩写形式,例如,JVM表示“Java Virtual Machine”。但是,ASM并不是多个单词的首字母缩写形式。在上面的文章中,记录了下面的话:
The ASM name does not mean anything: it is just a reference to the
__asm__
keyword in C, which allows some functions to be implemented in assembly language.
ASM是如何处理字节码(ByteCode)数据的呢?
回答:ASM处理字节码(ByteCode)的方式是“拆分-修改-合并”。
ASM处理字节码(ByteCode)数据的思路是这样的:
第一步,将文件拆分成多个部分;
第二步,对某一个部分的信息进行修改;
第三步,将多个部分重新组织成一个新的.class文件。
先挖个坑,寒假里仔细了解
核心组件:
ClassReader
Visiter
各种回调函数
参考文章:
https://blog.51cto.com/lsieun/2924583
https://blog.csdn.net/GGB__/article/details/120308772?spm=1001.2014.3001.5501
https://blog.csdn.net/zhuoxiuwu/article/details/78619645
__EOF__

本文链接:https://www.cnblogs.com/LiPengFeiii/p/15707616.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~