Spring注解模式的相关源码解析

  1. 基于注解实现的bean注册,要完成的目标
    1.1.能够扫描指定包下的类
    1.2 基于扫描的类生成定义的bean定义
  2. 了解spring是如何描述一个类的信息的
    在这里插入图片描述
    在这里插入图片描述
  3. 开始注解的扫描及注册源码的解析
    在这里插入图片描述
    在这里插入图片描述
    由持有的ClasspathBeandefinitionScan开始扫描
    3.1 这里主要实现由包名到资源的过程 在这里插入图片描述
    3.1.1 我们只有包名,需要把它转换成我们需要的资源类型
    PathMatchingResourcePatternResolver这个开始执行扫描的工作,返回资源类型
    这里使用的是递归的方式,从最开始的路劲开始执行查找类的工作
    在这里插入图片描述
    3.2.2 到达这里,我们已经有了统一的资源类型,开始执行解析的工作
    在这里插入图片描述
    从这里看,首先基于资源得到了一个元数据(包含这类的基本信息,类的注解信息),那它是如何得到的呢,这里使用了一个缓存工厂
    在这里插入图片描述
    开始执行创建把对应的source转换成类,在从类的信息里面读取到元数据,这里使用了asm来执行元数据的读取操作,asm是直接对二进制进行操作,而使用反射读取,需要把类加载进jvm中,而有些类暂时不会使用,这样会带来jvm的性能损耗
    在这里插入图片描述
    在这里插入图片描述
    到达了这里,就获取到了类的元数据信息,接下来,判断这个类的注解信息是否包括在定义的过滤器中
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    包含这Component。
    在这里可以有扩展的地方,我们可以自己写一个接口,只要元数据包含Component。
    二我们可以实现TypeFilter接口,使用自己的逻辑进行元数据的比较,判断那些类需要被加载
    在这里插入图片描述
    这里有个疑惑,这个注解是如何工作的
    通过源码分析,在进行初次扫描后,会进行一次刷新操作,会对相应的注解进行特殊处理。重新进行包扫描
    在这里插入图片描述

到这就完成了从包到资源,在从资源到元数据,在从元数据进行注解过滤,接下来就要开始
完成元数据的解析,组装bean定义
在这里插入图片描述
在发现是注解的方式时,对如下的一些注解进行一些参数的设置
在这里插入图片描述
到达了这里,我们也就得到了bean定义,开始执行注册的操作,达到了这里,我们也就完成了包名到资源,资源到元数据,元数据到bean定义,bean定义在注册到的这些步骤。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值