Spring IOC/DI、AOP 源码详解

思维导图

Spring IOC/DI、AOP 源码详解

思维导图链接

https://www.yuque.com/docs/share/13828bff-6abf-4a12-8970-d4842e8994e3?# 《Spring IOC/DI、AOP 源码详解》

思维导图内容

  • Spring IOC/DIAOP

  • 核心概念

  • BeanDefinition

  • BeanDefinition 中保存了我们的 Bean 信息,比如这个 Bean 指向的是哪个类、是否是单例的、是否懒加载、这个 Bean 依赖了哪些 Bean 等等。

  • BeanDefinitionHolder

  • 这是 BeanDefinition 的包装类,用来存储 BeanDefinition,name 以及 aliases 等

  • BeanFactory & AbstractBeanFactory

  • BeanFactory 是 Bean 工厂,所有的 Bean 都有 BeanFactory 统一创建和管理,Spring 提供了一个 AbstractBeanFactory ,它实现了 BeanFactory 的大部分功能,其中有一个非常重要的方法 getBean() 。

  • BeanFactoryPostProcessor & BeanPostProcessor

  • 如果实现了 BeanFactoryPostProcessor 接口,则在 refresh 方法中调用 invokeBeanFactoryPostProcessors 中创建;如果实现了 BeanPostProcessor 则在 registerBeanPostProcessors 方法中创建。BeanFactoryPostProcessor 可以在实例化 Bean 被拦截调用;BeanPostProcessor 可以再 Bean 完成初始化前后,分别被拦截调用。

  • AnnotationConfigApplicationContext

  • BeanDefinitionRegistry

  • Bean 定义注册器,实际上该接口的实现全部交给了 DefaultListableBeanFactory 实现了

  • AnnotationConfigRegistry

  • 注解配置注册器,用于扫描注解配置

  • DefaultListableBeanFactory(包含)

  • 默认的 BeanFactory 实现

  • IOC 流程基于注解模式

  • register

  • AnnotatedBeanDefinitionReader:用于读取基于注解的 BeanDefinition ,在这个 Reader 创建的过程中,会注册 ConfigurationClassPostProcessor 类,其负责加载配置类中的 BeanDefinition

  • invokeBeanFactoryPostProcessors(beanFactory)

  • 负责调用 BeanFactory 的后置处理方法,所有实现了 这个接口的 Bean,在这个阶段都会调用其 postProcessBeanFactory 方法。

  • registerBeanPostProcessors(beanFactory)

  • 实现了该接口的类,在其他所有类型的 Bean 初始化过程中,会在前后分别回调方法;为用户提供了在 Bean 初始化前后,修改或者扩展 Bean 的机会。

  • finishBeanFactoryInitialization(beanFactory)

  • 主要为实例化所有剩余的单例 Bean;创建过程为:根据 BeanDefinition 中的 classType ,获取其构造函数,根据反射创建 Bean 实例,然后调用 populateBean 方法进行属性设置,最后调用 initializeBean 回调一些与 Bean 生命周期相关的接口方法

参考链接

Spring IoC源码分析(注解版) – 上/中/下

Spring 源码学习 15:finishBeanFactoryInitialization(重点)

Spring IOC 容器源码分析

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值