Spring Boot2.0版本源码(九):Spring Boot的Servlet容器Tomcat工厂类的加载

在主程序中,使用了@SpringBootApplication注解,它其实使用了@EnableAutoConfiguration注解来完成一系列操作,@EnableAutoConfiguration注解import了AutoConfigurationImportSelector类,
在这里插入图片描述
它的构造函数实现了DeferredImportSelector接口,
在这里插入图片描述
上一节,我们学习过Spring Boot2.0版本源码(八):Spring Boot的注解的解析出Bean之核心方法,里面的ConfigurationClassParser类解析注解的核心方法中有一个processImports()方法(该方法是在解析配置文件时调用),专门用于处理@Import注解的一个方法,处理DeferredImportSelector接口的在如下代码中实现。
在这里插入图片描述

handle方法会将当前的DeferredImportSelector的实现类加入到deferredImportSelectors这个需要处理的handler之中。

在这里插入图片描述
在解析完成以后,处理之前注入的deferredImportSelectorHandler类中的集合
在这里插入图片描述
process()源码如下:
在这里插入图片描述
下面的会使用getImports()方法,在getImports()方法内部会调用process()方法
在这里插入图片描述
在这里插入图片描述
继续跟进,在getAutoConfigurationEntry()方法内执行解析@EnableAutoConfiguration注解的过程中,会注入一个org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration类。
在这里插入图片描述
进入这个类,发现会将EmbeddedTomcat.class这个类注入进来。
在这里插入图片描述
最后由EmbeddedTomcat这个类引入了TomcatServletWebServerFactory这个工厂类。
在这里插入图片描述
当这个工厂被注入以后,我们上一章Spring Boot2.0版本源码(九):Spring Boot的Servlet容器启动解析整体流程中讲过ServletWebServerApplicationContext类中的refresh()方法创建一个web容器,里面会用到tomcat工厂去去实现web容器的创建。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章