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源码解析/