spring boot源码分析

spring boot关键流程分析:

 

 运行 SpringBootTestApplication.main()

第一个步是加载入口类 SpringBootTestApplication,此类相当于spring的配置类。因为里面包含@configuration注解

 

 将 SpringBootTestApplication的类文件存入 this.sources集合, 然后推断当前运行环境是不是web环境。

 

 进入prepareContext方法

 

 从之前存入到sources集合里面取出 SpringBootTestApplication类文件信息,调用红圈的load方法,把SpringBootTestApplication

转化成beandefiniton类,注册到spring 的beandefintionMap容器

第二步 点击SpringBootTestApplication上的注解,会看到@Import(EnableAutoConfigurationImportSelector.class)。进入

EnableAutoConfigurationImportSelector类,其父类里面

 

 这里利用spring的功能,动态加载配置类文件,这里动态加载配置类文件,采用高明的spring SPI机制,不懂SPI机制的

另外去看看这方面的资料,最终目的是自动装配第三方组件。在spring boot里面只要把第三方组件的jar包引进来就可以自动装配

纳入spring 容器管理,比如 rabbitMQ,redis客户端,等等。

第三步:

 

 进入 refreshContext(context)方法 目的就是启动spring 容器,跟进去

 

 

 

 

 进入 

invokeBeanFactoryPostProcessors方法
进入后置处理器 ConfigurationClassPostProcessor.processConfigBeanDefinitions()方法
如图:

 

 进入 parser.parse(candidates) 目的是把 SpringBootTestApplication所在包下的所有类扫描出来,并且注册到spring beandefinitionMap里面

纳入spring 容器管理。

第四部:启动 内嵌的tomcat 整合进spring mvc

 

 

 

 

 

 

 

 

 

 



 

posted @ 2020-05-16 20:22  会游泳的小猪  阅读(304)  评论(0)    收藏  举报