目錄
在springboot工程中, 如何添加一個servlet呢?
方法1 : 使用@WebServlet注解
方法2 : 使用ServletRegistrationBean進行注冊
springmvc 采用的就是方式2和springboot集成的, 看一下源碼
springboot 字段裝配里面有這個類, 看一下源碼
90行, 創建了一個DispatcherServlet對象
120行創建了一個DispatcherServletRegistrationBean對象, 它是繼承于ServletRegistrationBean,通過這個類將DispatcherServlet添加到tomcat中
現在討論一下,DispatcherServletRegistrationBean在tomcat啟動過程中是被加載的, 看一下DispatcherServletRegistrationBean這個類的繼承關系
可以看到, 它實現了ServletContextInitializer這個接口, tomcat在啟動過程中會查找這個接口的所有子類, 進行處理
看一下tomcat的啟動流程
refresh() -> onRefresh()
此處找到了dispatcherServlet這個類, 到這里dispatcherServlet已經被添加到tomcat中
接下來看一下dispatcherServlet里面的initStrategies()方法 :
在這個方法中進行了大量的初始化操作, 讓我們看一下這個方法是如何被調用的, 看一下dispatcherServlet這個類的繼承關系
當我們訪問一個接口的時候, 首先會指定servlet的init方法, 首先看一下init方法
我們會發現, dispatcherServlet這個類里面沒有init方法, 說明是他的父類重寫了init方法, 經過尋找發現
HttpServletBean這個類重寫了init方法 :
最終執行了initStrategies方法進行了初始化
下一篇說一下初始化都進行了哪些操作