Spring IOC源码解析

  1. 工厂的抽象
  2. 初始化过程的抽象
  3. 资源的抽象
  4. 调用流程

工厂的抽象

BeanDefinition

AttributeAccessorBeanMetadataElement

AnnotatedBeanDefinition

BeanFactory

基础的实现类DefaultListableBeanFactory

AutowireCapableBeanFactory

ListableBeanFactory

HierarchicalBeanFactory

ConfigurableBeanFactory

ConfigurableListableBeanFactory

ApplicationContext

基础实现类

  • ClassPathXmlApplicationContext
  • FileSystemXmlApplicationContext
  • AnnotationConfigApplicationContext

WebApplicationContext

ConfigurableApplicationContext

ConfigurableWebApplicationContext

初始化过程的抽象

Lifecycle

LifecycleProcessor

SmartLifecycle

MessageListenerContainer

BeanFactoryPostProcessor

BeanDefinitionRegistryPostProcessor

BeanPostProcessor

InstantiationAwareBeanPostProcessor

SmartInstantiationAwareBeanPostProcessor

DestructionAwareBeanPostProcessor

MergedBeanDefinitionPostProcessor

ApplicationEvent

ApplicationContextEvent

ContextRefreshedEvent

ContextStartedEvent

ContextStoppedEvent

ContextClosedEvent

ApplicationListener

GenericApplicationListener

资源的抽象

InputStreamSource

Resource

WritableResource

ContextResource

HttpResource

PropertySource

PropertySources

PropertyResolver

Environment

基础实现类:StandardEnvironment

ConfigurableEnvironment

ConfigurableWebEnvironment

调用流程

  1. 创建EnvironmentStandardEnvironment
  2. 创建BeanFactoryDefaultListableBeanFactory
  3. 注册BeanPostProcessor以及注册环境的Bean
  4. 执行基础的BeanDefinitionRegistryPostProcessor#postProcessBeanDefinitionRegistry
  5. 排序自定义BeanDefinitionRegistryPostProcessorPriorityOrdered这个优先级先排
  6. 执行的BeanDefinitionRegistryPostProcessor#postProcessBeanDefinitionRegistry
  7. 排序自定义BeanDefinitionRegistryPostProcessorOrdered这个优先级
  8. 执行的BeanDefinitionRegistryPostProcessor#postProcessBeanDefinitionRegistry
  9. 排序其他自定义BeanDefinitionRegistryPostProcessor
  10. 执行的BeanDefinitionRegistryPostProcessor#postProcessBeanDefinitionRegistry
  11. 执行自定义的BeanDefinitionRegistryPostProcessor#postProcessBeanFactory
  12. 执行基础的BeanDefinitionRegistryPostProcessor#postProcessBeanFactory
  13. 根据PriorityOrderedOrdered排序以及其他执行BeanFactoryPostProcessor#postProcessBeanFactory
  14. 根据PriorityOrderedOrdered排序以及其他注册BeanPostProcessor
  15. 根据PriorityOrderedOrdered排序以及其他注册MergedBeanDefinitionPostProcessor

Spring IOC源码解析
http://example.com/2019/11/08/Spring/Spring IOC源码解析/
作者
FelixFly
发布于
2019年11月8日
许可协议