zoukankan      html  css  js  c++  java
  • springboot

     

     自动装配加载
        1 refresh()
        2 invokeBeanFactoryPostProcessors(beanFactory)
        3 PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(beanFactory, getBeanFactoryPostProcessors())
        4 ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(beanFactory)
        5 processConfigBeanDefinitions(beanFactory)
            5.1 找到启动配置类,App
        6 创建 ConfigurationClassParser类=》配置解析类
        7 ConfigurationClassParser.parse(candidates)=>解析启动类
        8 processConfigurationClass(ConfigurationClass ) 处理配置类
        9 doProcessConfigurationClass(ConfigurationClass configClass, SourceClass sourceClass) 真正的处理配置类
            =》这个方法比较重要
                =》1 处理配置类中配置的 @PropertySource
                =》2 处理配置类中配置的 @ComponentScan 如果没有配置默认扫描当前类路径下的所有类,并将其注册到beanFactory中,
                        =》如果扫描的类也是一个配置类,会递归processConfigurationClass(ConfigurationClass) 从而加载所有类的BeanDefine到beanFactory中
                =》3 处理配置类中的 @Import
                        => processImports()此方法会处理“配置解析类”的DeferredImportSelectorHandler属性,这里是自动装配的关键
                =》4 处理配置类的@ImportResource
                =》5 处理配置类中的@Bean
        10 DeferredImportSelectorHandler.process()
            =》此时会处理自动装配,通过一系列的处理最终会调用AutoConfigurationImportSelector.getAutoConfigurationEntry()方法来加载spring.fatories中的”org.springframework.boot.autoconfigure.EnableAutoConfiguration“所对应的值
            =》配置类加载完成之后 会循环遍历配置类 然后调用processConfigurationClass(onfigurationClass)方法处理配置类
        11 第9 10 会将所有的配置类都加载到“配置解析类(onfigurationClassParser)”的configurationClasses的集合中
        12 创建reader ( ConfigurationClassBeanDefinitionReader) 对象
        14 reader.loadBeanDefinitions(configurationClasses)加载所有的配置类
            =》遍历配置类 将配置类中涉及的相关类的BeanDefine注册到beanFatory中



    DispatchServlet是如何创建的?
      在spring.factories中配置了“DispatcherServletAutoConfiguration”配置类,通过自动装配原理,扫码该配置类来创建DispatchServlet实例
    DispatchSerlet中的ApplicatinContext是如何创建的?
      在实例化DispatchServlet的时候,由”ApplicationContextAwareProcessor“这个beanPostProcess处理类给起赋值的
  • 相关阅读:
    ASP.NET Razor
    ASP.NET Razor
    ASP.NET Razor
    ASP.NET Razor C# 和 VB 代码语法
    ASP.NET Razor 简介
    aspnet_regiis -i VS 20XX 的开发人员命令提示符
    web.config
    Java_Freemarker
    SQL SELECT INTO 语句
    SQL UNION 和 UNION ALL 操作符
  • 原文地址:https://www.cnblogs.com/Tony100/p/13411343.html
Copyright © 2011-2022 走看看