work hard work smart

专注于Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Spring Boot 配置类1-配置类流程

Posted on 2020-03-07 14:58  work hard work smart  阅读(203)  评论(0编辑  收藏  举报

什么是配置类, 作用?

配置类一般使用Configuration注解,ComponentScan,Import等注解标注的类。起到配置的作用。

 

常用的配置注解

Import,PropertySource,ComponentScan等待

 

一、配置文件入口

 

 

二、postProcessBeanDefinitionRegistry逻辑

 

获得 BeanDefinitionRegistry的唯一id: registryId,

检查一下registryId是否处理过。

如果没有处理过,将它添加到已处理集合中。

然后调用processConfigBeanDefinition方法

 

三、processConfigBeanDefinition逻辑

进入processConfigBeanDefinitions方法。

 1、首先遍历BeanDefinition

configCandidates为空,就返回。有一个值,beanname为sb2Application 

 

2、继续往下走,ConfigurationClasParser是配置类的解析工具。 (processConfigBeanDefinitions方法。 具体解析流程见下一篇。  Spring Boot 配置类解析逻辑(processConfigBeanDefinitions方法中的循环体) )

 有两个集合。candidates是待处理配置类集合, alreadyParsed是已经处理完毕的配置类集合。

然后是do while循环体重。parse方法解析candidates

 

 进入parse方法,获得BeanDefinition赋值给bd,bd的metadata中有三个注解

 

 

sb2Application注解如下

 

 

然后进入parse(((AnnotatedBeanDefinition) bd).getMetadata(), holder.getBeanName());

 

 

3、解析完以后,注册importRegistry以及清空缓存。