spring 配置类初始化简要流程
2020-04-17 17:53:50 0 举报
spring 配置类启动简要流程
作者其他创作
大纲/内容
bd的解析器,初始化的时候往bdmap中添加一些bd
初始化了一个RequiredAnnotationBeanPostProcessor,并且放到bdmap中,
把配置类包装成AnnotatedGenericBeanDefinition
ScopedProxyMode.NO--------------------直接将bd返回。
将经过scope处理策略处理过返回的bean放入bdmap中,被放入的bd可能是scopefactorybean
利用前面初始化的AnnotatedBeanDefinitionReader对配置类进行注册
bd默认的Scope就是singleton,是这个类在初始化的时候指定的,默认的scoprproxy是ScopedProxyMode.NO
初始化了ApplicationContext的成员变量ConditionEvaluator
registerBeanPostProcessors
finishRefresh
@Condition-Condition接口的font color=\"#3333ff\
initMessageSource
主要用于applicationContext的scan方法使用,并不是spring初始化过程中使用的对象
初始化了一个AnnotatedBeanDefinitionReader
finishBeanFactoryInitialization
AnnotatedBeanDefinitionReader
font color=\"#3399ff\
this()
初始化了一个ConfigurationClassPostProcessor,并且放到bdmap中,
解析@Condition注解的时候如果没有添加这个注解或者没加注解,那么跳过解析过程。
注册配置类register(annotatedClasses);
onRefresh
initApplicationEventMulticaster
ClassPathBeanDefinitionScanner
解析@Scope,如果没加注解,那么默认scopename为singleton,将bd直接添加带bdmap中,scopeproxymode为tagetclass,则利用ScopedProxyFactoryBean来生成bd
初始化了一个ClassPathBeanDefinitionScanner
registerListeners
初始化了一个DefaultEventListenerFactory,并且放到bdmap中,
初始化了一个CommonAnnotationBeanPostProcessor,并且放到bdmap中,
invokeBeanFactoryPostProcessors
递归解析@condition注解
初始化了一个AutowiredAnnotationBeanPostProcessor,并且放到bdmap中,
初始化了一个EventListenerMethodProcessor,并且放到bdmap中,
refresh方法
解析bd的@Scope,
为aop设置属性,比如tagetclass,包括判断是不是代理接口
一个类如果是加了@confgiuration注解,就是全注解(isFullConfigurationCandidate),如果加了Component、ComponentScan、Import、ImportResource、Bean注解,那么就是isLiteConfigurationCandidate
prepareBeanFactory
利用前面初始化的ConditionEvaluator来判断这个配置类是否可以跳过解析
postProcessBeanFactory
收藏
收藏
0 条评论
下一页