您好,欢迎访问代理记账网站
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

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 容器源码分析


分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进