springboot
2020-07-31 18:22 Tony、 阅读(143) 评论(0) 编辑 收藏 举报
1 创建环境 2 打印banner 3 创建applicationcontent 4 填充applicationcontent 5 refresh
自动装配加载 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处理类给起赋值的