当前位置 博文首页 > L-Java:Spring IoC容器初始化源码(4)—<context:component-sca

    L-Java:Spring IoC容器初始化源码(4)—<context:component-sca

    作者:[db:作者] 时间:2021-07-25 15:58

    ??基于最新Spring 5.x,介绍了包括< context:component-scan/>扩展标签解析源码、spring.components扩展点、自定义Spring命名空间扩展点!

    ??上一篇文章:Spring IoC容器初始化源码(3)—parseDefaultElement、parseCustomElement解析默认、扩展标签,registerBeanDefinition注册Bean定义中,我们主要讲解了parseDefaultElement解析默认标签的方法、parseCustomElement解析扩展标签的方法和registerBeanDefinition注册bean定义的方法的源码!
    ??现在我们看几个详细案例,包括< context:component-scan/>扩展标签解析源码、spring.components扩展点、自定义Spring命名空间扩展点!

    Spring IoC容器初始化源码 系列文章

    Spring IoC容器初始化源码(1)—setConfigLocations设置容器配置信息

    Spring IoC容器初始化源码(2)—prepareRefresh准备刷新、obtainFreshBeanFactory加载XML资源、解析<beans/>标签

    Spring IoC容器初始化源码(3)—parseDefaultElement、parseCustomElement解析默认、扩展标签,registerBeanDefinition注册Bean定义

    Spring IoC容器初始化源码(4)—<context:component-scan/>标签解析、spring.components扩展点、自定义Spring命名空间扩展点

    Spring IoC容器初始化源码(5)—prepareBeanFactory、invokeBeanFactoryPostProcessors、registerBeanPostProcessors方法

    Spring IoC容器初始化源码(6)—finishBeanFactoryInitialization实例化Bean的整体流程以及某些扩展点

    Spring IoC容器初始化源码(7)—createBean实例化Bean的整体流程以及构造器自动注入

    Spring IoC容器初始化源码(8)—populateBean、initializeBean实例化Bean以及其他依赖注入

    < context:property-placeholder/>标签以及PropertySourcesPlaceholderConfigurer占位符解析器源码深度解析

    三万字的ConfigurationClassPostProcessor配置类后处理器源码深度解析

    基于JavaConfig的AnnotationConfigApplicationContext IoC容器初始化源码分析

    文章目录

    • Spring IoC容器初始化源码 系列文章
    • 1 自定义命名空间扩展点
    • 2 < context:component-scan/>扩展标签解析
      • 2.1 resolvePlaceholders非严格解析占位符
      • 2.2 configureScanner创建配置扫描器
        • 2.2.1 createScanner创建配置扫描器
          • 2.2.1.1 registerDefaultFilters注册默认的类型过滤器
          • 2.4.2.2. parseTypeFilters解析类型过滤器标签
          • 2.2.2.1 createTypeFilter创建TypeFilter
      • 2.3 doScan扫描以及注册BeanDefinition
        • 2.3.1 findCandidateComponents查找BeanDefinition
          • 2.3.1.1 scanCandidateComponents扫描包下的BeanDefinition
            • 2.3.1.1.1 isCandidateComponent检查类型过滤器TypeFilter
            • 2.3.1.1.2 isCandidateComponent检查bean定义
        • 2.3.2. generateBeanName生成beanName
          • 2.3.2.1 determineBeanNameFromAnnotation查找beanName
          • 2.3.2.2 buildDefaultBeanName生成默认beanName
        • 2.3.3 postProcessBeanDefinition设置默认值
        • 2.3.4 processCommonDefinitionAnnotations解析其他注解
        • 2.3.5 checkCandidate检查重复beanName
        • 2.3.6 Spring5的spring.components扩展点
          • 2.3.6.1 spring.components组件索引文件的读取
          • 2.3.6.2 indexSupportsIncludeFilters组件索引支持
          • 2.3.6.3 addCandidateComponentsFromIndex基于componentsIndex加载bean定义
            • 2.3.6.3.1 extractStereotype提取过滤类型
            • 2.3.6.3.2 getCandidateTypes返回满足条件的bean类型
          • 2.3.6.4 spring.components文件的格式以及加载格式
          • 2.3.6.5 spring.components扩展点案例
      • 2.4 registerComponents注册组件
        • 2.4.1 registerAnnotationConfigProcessors注册注解配置处理器
    • 3 小结
    cs