spring -core分析

spring-core 模块

共有6个包
在这里插入图片描述

asm分析

在这里插入图片描述
AnnotationVisitor类:是一个抽象类,定义在解析注解时会触发的事件,如解析到一个基本值类型的注解、enum值类型的注解、Array值类型的注解、注解值类型的注解等。

AnnotationWriter类:继承了 AnnotationVisitor 类,用于拼接注解相关字节码。

Attribute类:字节码中属性的类抽象。

ByteVector类:字节码二进制存储的容器。

ClassReader类:字节码的读取与分析引擎。它采用类似SAX的事件读取机制,每当有事件发生时,调用注册的ClassVisitor、AnnotationVisitor、FieldVisitor、MethodVisitor做相应的处理。

ClassVisitor接口:定义在读取Class字节码时会触发的事件,如类头解析完成、注解解析、字段解析、方法解析等。

ClassWriter类:它实现了ClassVisitor接口,用于拼接字节码。

Context类:定义了一些字节码及其属性。

CurrentFrame类:继承自 Frame 类

从这些类也可以看出来asm包下的这些都是操作字节的,所有我们在写java代码时其实很少回去碰到的,在Spring2.5.6的时候需要asmJar 包, 3.0开始提供他自己独立的asmJar

标题第二个包cglib --代码生成库

在这里插入图片描述
很多时候在编译时期不能决定具体的对象类型,无法生成所需要的字节码。只能在运行时期,根据传入的实例,来生成字节码。这时就要用到动态代理

Cglib是一个强大的高性能的字节码生成工具包。底层通过字节码增强处理框架 ASM,来生成字节码并装载到JVM。脚本语言Groovy也是使用ASM来生成或修改Java的字节码。
动态代理常见的有jdk动态代理和cglib代理两种方式。jdk代理方式基于接口实现,cglib则并没有局限于接口,采用的是生成子类的方式,只要被代理类和方法不被final修饰即可

core --核心包

在这里插入图片描述

1)根目录:别名注册、属性访问、
2)annotation目录:注解、元注解、合并的注解等
3)codec目录:encode和decode输入流
4)convert目录:主要是转换器服务,将一个类型转换位另外一个类型。
5)env目录:就是配置文件Profiles
6)io目录:一些读取资源的类
7)log目录:几个日志类,利用的是Apache Log
8)serializer目录:序列化、反序列化类
9)style目录:代码风格
10)task目录:可执行任务类
11)type目录:Class元数据、注解元数据等

lang --几个注解,目前没其他东西

util --工具类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值