从上一节我们了解了什么是rest映射。那是什么让映射与方法结合到一起的呢?
1、步骤分析
我们知道springBoot整合了springMVC所有的组件,在springMVC中,所有的组件控制都是DispatcherServlet,所以我们直接去DispatcherServlet中找寻与转发及handlerMapping相关。以下为流程图示例,你们可以一步步的跳转断点调试
2、源码分析
protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception {
HttpServletRequest processedRequest = request;
HandlerExecutionChain mappedHandler = null;
boolean multipartRequestParsed = false;
WebAsyncManager asyncManager = WebAsyncUtils.getAsyncManager(request);
try {
ModelAndView mv = null;
Exception dispatchException = null;
try {
processedRequest = checkMultipart(request);
multipartRequestParsed = (processedRequest != request);
// step into 进入找到当前请求使用哪个Handler(Controller的方法)处理
mappedHandler = getHandler(processedRequest);
//HandlerMapping:处理器映射。/xxx->>xxxx
所有的请求映射都在HandlerMapping中。
RequestMappingHandlerMapping:保存了所有@RequestMapping 和handler的映射规则。
SpringBoot自动配置欢迎页的 WelcomePageHandlerMapping 。访问 /能访问到index.html;
我们需要一些自定义的映射处理,我们也可以自己给容器中放HandlerMapping。自定义 HandlerMapping