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处理类给起赋值的
  • 相关阅读:
    模板-树链剖分
    bzoj2523 聪明的学生
    P1220 关路灯
    BZOJ3572 [Hnoi2014]世界树
    BZOJ4013 [HNOI2015]实验比较
    BZOJ4012 [HNOI2015]开店
    BZOJ4011 [HNOI2015]落忆枫音
    BZOJ4009 [HNOI2015]接水果
    BZOJ4010 [HNOI2015]菜肴制作
    BZOJ4008 [HNOI2015]亚瑟王
  • 原文地址:https://www.cnblogs.com/Tony100/p/13411343.html
Copyright © 2011-2022 走看看