spring源碼學習(一)

Spring作爲一個IOC容器,今天我們學習它作爲web解析的地方,學習下webmvc包的代碼。
我們先看下web.xml文件

upload successful

可以看到通過DispatcherServlet來實現頁面的mapper處理。

DispatcherServlet->FrameworkServlet->HttpServletBean->HttpServlet

這是集成關係從HttpServletBean可以看出它是一個httpservlet ,

我們看下HttpServletBean的init方法

upload successful

可以看到初始化方法在initServletBean中。我們繼續看下FrameworkServlet中的initServletBean

upload successful

upload successful

我們看下DispatcherServlet的onRefresh

upload successful

我們發現在這裏進行了初始化,重點分析下initHandlerMappings方法

upload successful

upload successful

upload successful

可以看到把所有的handlemapping都放到map中。

我們在看處理的地方

upload successful

upload successful

upload successful

我們看下lookupHandlerMethod 這個方法

upload successful

upload successful

看到這裏我也蒙圈了。這mappingRegistry玩意纔是關鍵。

upload successful

打開InitializingBean 發現這個接口的唯一方法是afterPropertiesSet。很顯然spring又在構造方法埋點了。
upload successful

可以看到根據url從handlerMap 得到處理的bean對應的method方法.

我們繼續看下處理的地方

upload successful

upload successful

upload successful

異步處理下。

 

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