IOC底层原理

包含Bean的创建

Untitled

  1. 创建BeanFactorycreateBeanFactory

    创建一个Bean工厂DefaultListableBeanFactory

  2. 加载 读取配置文件 设置属性PropertyValues

  3. 注册BeanDefinition

BeanDefinitionRegistry.registerBeanDefinition(String , BeanDefinition )

  1. 修改BeanDefinition

  2. 实例化

  3. 填充属性 populateBean 扩展Bean的实例化信息 根据BeanDefinition创建Bean, 注入属性 AbstractBeanFactory.createBean(String , BeanDefinition , Object[] )

  4. 初始化initializingBean

应用上下文

BeanFactoryPostProcessor

可以在所有BeanDefinition加载完之后, Bean实例化之前, 修改BeanDefinition属性

BeanPostProcessor

用于修改新实例化 Bean 对象的扩展点

postProcessBeforeInitialization 用于在Bean 对象执行初始化方法之前,执行此方法、 postProcessAfterInitialization 用于在 Bean 对象执行初始化方法之后,执行此方法。