Spring IOC源码解析
- 工厂的抽象
- 初始化过程的抽象
- 资源的抽象
- 调用流程
工厂的抽象
BeanDefinition
AttributeAccessor和BeanMetadataElement
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
调用流程
- 创建Environment(StandardEnvironment)
- 创建BeanFactory(DefaultListableBeanFactory)
- 注册BeanPostProcessor以及注册环境的Bean
- 执行基础的BeanDefinitionRegistryPostProcessor#postProcessBeanDefinitionRegistry
- 排序自定义BeanDefinitionRegistryPostProcessor,PriorityOrdered这个优先级先排
- 执行的BeanDefinitionRegistryPostProcessor#postProcessBeanDefinitionRegistry
- 排序自定义BeanDefinitionRegistryPostProcessor,Ordered这个优先级
- 执行的BeanDefinitionRegistryPostProcessor#postProcessBeanDefinitionRegistry
- 排序其他自定义BeanDefinitionRegistryPostProcessor
- 执行的BeanDefinitionRegistryPostProcessor#postProcessBeanDefinitionRegistry
- 执行自定义的BeanDefinitionRegistryPostProcessor#postProcessBeanFactory
- 执行基础的BeanDefinitionRegistryPostProcessor#postProcessBeanFactory
- 根据PriorityOrdered、Ordered排序以及其他执行BeanFactoryPostProcessor#postProcessBeanFactory
- 根据PriorityOrdered、Ordered排序以及其他注册BeanPostProcessor
- 根据PriorityOrdered、Ordered排序以及其他注册MergedBeanDefinitionPostProcessor
Spring IOC源码解析
      http://example.com/2019/11/08/Spring/Spring IOC源码解析/