Spring之Bean生命周期源码解析(一)

本文详细解析了Spring中Bean的生命周期,从启动ApplicationContext到Bean的初始化和销毁,包括Bean包扫描、MetadataReader、BeanDefinition合并及加载类的过程。重点介绍了Bean生命周期的关键步骤和源码细节。
摘要由CSDN通过智能技术生成

Spring之Bean生命周期源码解析(一)

  • Bean生命周期流程
  • Bean包扫描底层流程
  • MetadataReader
  • 合并BeanDefinition
  • 加载类

什么是Bean的生命周期

Bean的生命周期就是指: 在Spring中,一个Bean是如何生成的,如何销毁的

Bean生命周期流程图

Bean的生命周期:

  1. 启动ApplicationContext
  2. 创建BeanFactory
  3. 初始化BeanFactory
  4. 在BeanFactory后置处理:在这里会进行包扫描,找到所有符合条件的class文件
  5. 生成BeanDefition
  6. 合并BeanDefinition
  7. 加载类
  8. 实例化前
  9. 实例化
  10. 推断构造
  11. 实例化
  12. BeanDefinition的后置处理
  13. 实例化后
  14. 填充属性
  15. 填充属性后
  16. 执行Aware回调接口
  17. 初始化前
  18. 初始化
  19. 初始化后

Bean包扫描底层流程图

Spring期启动的时候会进行包扫描,会先调用
ClassPathScanningCandidateComponentProvider#scanCandidateComponents(String basePackage)

去扫描某个包路径,并且将需要的class文件解析成BeanDefinition然后放到一个set集合中.

Spring包扫描底层流程:

  1. 首先通过ResourcePatternResolver获得指定包路径下的所有.class文件(在Spring源码中,会把此文件包装成Resouce对象)
// 获取basePackage下所有的文件资源
String packageSearchPath = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX +
resolveBasePackage(basePackage) + '/' + this.resourcePattern;
// Class文件的File对象
Resource[] resources = getResourcePatternResolver().getResources(packageSearchPath);
  1. 遍历每个Resource对象
for (Resource resource : resources
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值