IOC
2022-11-16 19:26:40 1 举报
IOC
作者其他创作
大纲/内容
BeanDifinitionMap现在只包含了配置类以及初始化的功能类的BeanDifinition
ConfigurationClassPostProcess这个类是用来解析配置类的(@Configuration)以及@ComponentScan,这个类实现了BeanFactoryPostProcess接口,会在后续的refresh->invokeBeanFactoryPostProcesors调用
实例化后调用该后置处理器(MergedBeanDefinitionPostProcessor)的postProcessMergedBeanDefinition方法去修改Bean
执行beanPostProcessorsAfterInitailization()
BeanFactoryRegistryPostProcessors通过他的一系列实现类将Bean注册进BeanFactory
执行实现了PriorityOrdered的BeanFactoryPostProcessors类的方法
首先会对beanName、beanClassLoad、beanFactory等三个Aware接口进行处理、然后通过初始化之前的前置处理器(BeanPostProcessorsBeforeInitialization)来处理剩下的Aware接口,调用相关接口的回调方法
Bean
EventListenerMethodProcessorDefaultEventListenerFactoryspring中负责监听的两个功能类
扫描@Configuration和@component的类
检查@DependsOn注解,该注解作用是在当前Bean实例化之前去实例化其他Bean
populateBean(属性注入)
ConfigurationClassPostProcessors
AnnotationBeanDifinitionReader这个类会往BeanDifinition中注册许多spring初始化容器的功能类
执行实现了剩余的BeanFactoryPostProcessors类的方法
AutowiredAnnotationBeanPostProcessor(这个类是用来解析@AutoWired注解的)
@ImportSelector(target.class)目标类实现了ImportSelector,在实现方法中返回目标类的全限定类名,用来注入BeanDifinition中
BeanFactoryPostProcessor在类注册进BeanFactory时提供一个可以对他进行修改的抽象接口
BeanFactorybeanDefinitionMap是BeanFactory的一个成员变量,执行完上述步骤后,beanDefinitionMap包含所有类的BeanDifinition
AnnotationConfigApplicationContext
扫描@Import注解
执行实现了剩余的BeanFactoryRegistryPostProcessors类的方法
执行实现了PriorityOrdered的BeanFactoryRegistryPostProcessors类的方法
执行顺序
ClassPathBeanDifinitionScanner通过doScan()去进行扫描
BeanDefinitionRegistry负责将配置类注册到BeanDifinitionMap中
@Import(target.clss)直接将一个类解析到BeanDifinition中
调用钩子方法去进行实例化
执行实现了Ordered的BeanFactoryPostProcessors类的方法
执行实现了Ordered的BeanFactoryRegistryPostProcessors类的方法
0 条评论
下一页