美文网首页
SpringBoot源码解析之配置类解析

SpringBoot源码解析之配置类解析

作者: handsomemao666 | 来源:发表于2020-09-05 18:02 被阅读0次

SpringBoot配置类解析主流程

  • 配置类解析入口
    -> refresh()
    -> invokeBeanFactoryPostProcessors(beanFactory)
    -> ConfigurationClassPostProcessor
    -> postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry)
  • postProcessBeanDefinitionRegistry 方法逻辑
    -> 获得BeanDefinition的唯一id:registryId
    -> 检查一下registryId是否已处理过
    -> 添加registryId到已处理集合中
    -> processConfigBeanDefinitions
  • processConfigBeanDefinitions方法逻辑


循环体执行流程

-> ConfigurationClassParser#parse
-> ConfigurationClassParser#validate
-> 读取BeanMethod注册BeanDefinition
-> 处理新引入的BeanDefinition

doProcessConfigurationClass

  • 内部类
    配置类内部再使用@Configuration定义的内部类会继续进行配置类解析

  • PropertySource
    用法:@PropertySource({demo.properties})
    遍历指定路径,替换占位符,加载资源,将资源添加到environment

  • ComponentScan
    @ComponentScan(basePackages={"pkgA","pkgB"},basePackageClasses={"A.class","B.class"})
    basePackageClasses:扫描指定类所在的包
    没设置扫描路径的话,扫描配置类所在路径
    过滤顺序:excludeFilters-> includeFilters -> false

  • Import
    ImportSelector.class&DeferredImportSelector.class
    处理以上两个接口实现selectImports返回的类名数组

  • ImportResource
    处理xyz.xml配置文件

  • BeanMethod
    @Bean注解的方法处理

  • 接口默认方法
    @Bean
    default A getA(){}

  • 父类
    不为null
    不以java开头
    未处理过

相关文章

网友评论

      本文标题:SpringBoot源码解析之配置类解析

      本文链接:https://www.haomeiwen.com/subject/ddkfektx.html