SpringMVC启动流程
2025-02-08 11:26:09   0  举报             
     
         
 AI智能生成
  分析SpringMVC启动流程源码
    作者其他创作
 大纲/内容
  SpringMVC处理请求流程    
     根据请求path找Handler    
     遍历HandlerMapping来匹配请求path对应的Handler    
     BeanNameUrlHandlerMapping会去handlerMap找  
     RequestMappingHandlerMapping会去pathLookup找  
     找到Handler后执行Handler    
     根据不同的Handler类型返回对应的HandlerAdapter  
     遍历HandlerAdapter看哪个HandlerAdapter是支持当前Handler的    
     HttpRequestHandlerAdapter支持的Handler类型为HttpRequestHandler  
     SimpleControllerHandlerAdapter支持的Handler类型为Controller  
     RequestMappingHandlerAdapter支持的Handler类型为HandlerMethod  
     哪个HandlerAdapter支持就返回哪个  
     调用HandlerAdapter的handle(),会传入Request对象、Response对象、Handler对象    
     HttpRequestHandlerAdapter的handle()会将Handler对象转成HttpRequestHandler类型,然后执行handleRequest()方法,从而执行业务代码  
     SimpleControllerHandlerAdapter的handle()会将Handler对象转成Controller类型,然后执行handleRequest()方法,从而执行业务代码  
     RequestMappingHandlerAdapter的handle()会将Handler对象转成HandlerMethod类型,然后就要执行HandlerMethod对应的Method了    
     解析方法参数    
     HandlerMethodArgumentResolver  
     执行方法  
     解析返回返回值    
     HandlerMethodReturnValueHandler    
     有@ResponseBody    
     RequestResponseBodyMethodProcessor  
     没有@ResponseBody    
     返回类型为CharSequence    
     ViewNameMethodReturnValueHandler  
     注意String类型实现了CharSequence接口  
     SpringMVC启动流程    
     Tomcat启动  
     解析Web.xml    
     创建DispatcherServlet  
     调用DispatcherServlet的init()    
     创建Spring容器  
     发布ContextRefreshedEvent事件  
     触发执行initStrategies()    
     初始化HandlerMappings    
     BeanNameUrlHandlerMapping    
     执行detectHandlers(),找到beanName为/xxxx的Bean    
     handlerMap<path,Bean对象>  
     path就是beanName  
     RequestMappingHandlerMapping    
     执行afterPropertiesSet(),找到@RequestMapping的方法    
     pathLookup<path,RequestMappingInfo>  
     registry<RequestMappingInfo, HandlerMethod>  
     HandlerMethod((Object handler, Method method))  
     RouterFunctionMapping  
     初始化HandlerAdapters    
     HttpRequestHandlerAdapter  
     SimpleControllerHandlerAdapter  
     RequestMappingHandlerAdapter    
     生成默认的HandlerMethodArgumentResolver    
     org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter#getDefaultArgumentResolvers  
     生成默认的HandlerMethodReturnValueHandler    
     org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter#getDefaultReturnValueHandlers  
     HandlerFunctionAdapter  
    
 
 
 
 
  0 条评论
 下一页
  
   
   
   
   
  
  
  
  
  
  
  
  
  
  
 