Spring的最深处——ASM入门

Spring的最深处——ASM入门

Spring 就两个核心

一是AOP

二是IOC

具体来说,Spring的AOP,可以通过JDK的动态代理来实现,也可以通过CGLIB实现。其中,CGLib (Code Generation Library)是在ASM的基础上构建起来的(当然JDK Proxy也是一样的),所以,Spring AOP是间接的使用了ASM。(参考自Spring Framework Reference Documentation8.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 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   飞飞很要强  阅读(1279)  评论(0编辑  收藏  举报
编辑推荐:
· 从 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的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示