processDispatchResult -> this.render(mv, request, response); -> view.render()
RequestMappingHandlerAdapter 實現(xiàn)了BeanFactory. 就是系統(tǒng)啟動的AppliconContext extends BeanFacotry. 它加載所有配置掃描config, 注解等. implents InitializingBean. afterPropertiesSet() 在創(chuàng)建bean后, 初始化的屬性. 在afterPropertiesSet里它將配置放到resolves里, 等到調(diào)用doServlet是調(diào)用.
請求 --> DispatcherServlet --> 處理器映射器(HandlerMapping)--> 處理器適配器(HandlerAdapter)--> 處理器(Controller)--> 處理器方法執(zhí)行 --> 處理器方法返回值處理(HandlerMethodReturnValueHandler)--> 視圖解析器(ViewResolver)--> 視圖(View)--> 響應(yīng)
servlet init -> HttpServletBean.initServletBean -> FrameworkServlet .initWebApplicationContext -> DispacherServlet.onFresh
![image.png](https://upload-images.jianshu.io/upload_images/1789421-6312921a56811b02.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
`init` 方法是在 Servlet 生命周期中的一次性初始化方法者甲,它在 Servlet 容器加載 Servlet 時被調(diào)用拾给,通常只執(zhí)行一次要出。
當(dāng) Servlet 容器啟動時,會為每個 Servlet 類實例化一個對象偿枕,并調(diào)用其 `init` 方法進(jìn)行初始化。這個過程只會發(fā)生一次,即使有多個請求同時到達(dá)該 Servlet焰情。
一旦 Servlet 實例完成初始化,它會一直保持在內(nèi)存中剥懒,供后續(xù)請求使用内舟。每個請求都會創(chuàng)建一個新的線程來處理,并調(diào)用 Servlet 的 `service` 方法來處理請求初橘。在處理完請求后验游,線程不會銷毀 Servlet 實例,而是繼續(xù)等待下一個請求到達(dá)保檐。
因此耕蝉,`init` 方法只會執(zhí)行一次,用于初始化 Servlet夜只。而每個請求都會調(diào)用 `service` 方法來處理具體的請求邏輯垒在。
AbstractHandlerMethodMapping在加載它之后, 會將所有g(shù)etmapping等的類注冊到
applicationcontextaware vs @autowired 暫時沒看出區(qū)別, 可能只有看底層的裝配才有可能分析. 反正aware就是注入個所需類一般是