SpringMvc源码分析
2024-06-30 17:13:35 0 举报
AI智能生成
登录查看完整内容
springmvc
作者其他创作
大纲/内容
Tomcat启动
创建DispatchServlet对象
创建Spring容器
发布ContextRefreshEvent事件
path就是beanName
BeanNameUrlHandlerMapping
RequestMappingHanderMapping
RouterFuncationMapping
初始化HandlerMappings
HttpRequestHandlerAdapter
SImpleContollerHandlerAdapter
生成默认的HandlerMethodArgumentResolver
生成默认的HandlerMethodReturnValueHandler
RequestMappingHandlerAdapter
HandlerFunctionAdapter
初始化HandlerAdapters
触发执行initStrategies()
调用DispatchServlet对象的.init()方法
解析web.xml
SpringMvc启动流程
BeanNameUrlHandlerMapping会从handlerMap找
RequestMappingHandlerMapping会找pathLookup找
遍历HandlerMappingl来匹配请求的path的Handler
根据请求path找Handler
根据不同的Handler类型返回对应的HandlerAdapter
SimplerControllerHandlerAdapter支持的Handler类型为Controller
RequestMappingHandlerAdapter支持的Handler类型为HandlerMethod
遍历HandlerAdapter看哪个Handler支持当前Handler
哪个HandlerAdapter支持就返回哪个
HttpRequestHandlerAdaper的handle()会将Handler对象转成HttpRequestHandler,然后执行handleRequest()方法,从而执行业务代码
HttpRequestHandlerAdapter支持的Handler类型HttpRequestHandler
HandlerMethodArgumentResolver
解析方法参数
执行方法
RequestResponseBodyMethodProcessor
有@RequestBody注解
ViewNameMthodReturnValueHandler
String实现了CharSequeue接口
返回类型为CharSequeue
没有@RequestBody注解
HandlerMethodReturnValueResolver
解析方法返回值
RequestMappingHandlerAdapter的handle()会将Handler对象转成HandlerMetod类型,然后执行HandlerMethod的Method方法
调用HandlerAdapter的handler(),会传入Request对象、Repsonse对象、Handler对象
找到Handler后执行Handler
SpringMvc处理请求流程
SpringMvc源码分析
0 条评论
回复 删除
下一页