springmvc 主要功能由核心控制器,也就是DispatcherServlet來完成。
核心控制器在服務器啟動的時候便初始化,在初始化過程中,讀取springmvc.xml文件。
在springmvc.xml中定義了<context:component-scan base-package="com.zhg"></context:component-scan>,這里定義了業務處理器所在的包。核心控制器會掃描包下所有的類,找到那些帶有
@Controller注解的類。 然后會讀取帶有@Controller注解類中的帶有@RequestMapping的方法,
這些都是通過反射來完成。
RequestMapping中定義了路徑,核心控制器會通過一個hash結構,將路徑當做鍵,值是某個類中的某個方法保存起來。
當有請求訪問某一個業務處理器的時候,會首先通過核心控制器,在這里可以獲得當前請求的路徑,根據路徑(鍵),去hash中尋找對應的方法。
如果根據鍵沒有找到對應值則會返回404狀態碼,如果找到了值,就會通過反射執行值中的方法。
一切的框架都可以用反射來解釋