spring-core是spring框架的基石,它为spring框架提供了基础的支持。spring-core从源码上看,分为6个package,分别是asm,cglib,core,lang,objenesis和util。
asm
官网地址:https://asm.ow2.io/
ASM处理字节码(ByteCode)的方式是“拆分-修改-合并”。
ASM处理字节码(ByteCode)数据的思路是这样的:
第一步,将文件拆分成多个部分;
第二步,对某一个部分的信息进行修改;
第三步,将多个部分重新组织成一个新的.class文件。
⭐https://blog.51cto.com/lsieun/2924583
https://www.cnblogs.com/davidwang456/p/5652181.html
https://blog.csdn.net/GGB__/article/details/120308772?spm=1001.2014.3001.5501
https://blog.csdn.net/zhuoxiuwu/article/details/78619645
主要涉及到设计模式:访问者模式
cglib(create generation lib)
https://www.iteye.com/topic/799827
Spring AOP 默认使用JDK 动态代理,如果对象没有实现接口,则使用CGLIB 代理。下图展示了各层关系。