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容器的創建。

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