Spring作爲一個IOC容器,今天我們學習它作爲web解析的地方,學習下webmvc包的代碼。
我們先看下web.xml文件
可以看到通過DispatcherServlet來實現頁面的mapper處理。
DispatcherServlet->FrameworkServlet->HttpServletBean->HttpServlet
這是集成關係從HttpServletBean可以看出它是一個httpservlet ,
我們看下HttpServletBean的init方法
可以看到初始化方法在initServletBean中。我們繼續看下FrameworkServlet中的initServletBean
我們看下DispatcherServlet的onRefresh
我們發現在這裏進行了初始化,重點分析下initHandlerMappings方法
可以看到把所有的handlemapping都放到map中。
我們在看處理的地方
我們看下lookupHandlerMethod 這個方法
看到這裏我也蒙圈了。這mappingRegistry玩意纔是關鍵。
打開InitializingBean 發現這個接口的唯一方法是afterPropertiesSet。很顯然spring又在構造方法埋點了。
可以看到根據url從handlerMap 得到處理的bean對應的method方法.
我們繼續看下處理的地方
異步處理下。