分工明确,互不干涉
九大组件:
HandlerMappings(如通过requestMapping找到方法)
HandlerAdapters适配器
HandlerExceptionResolvers
ViewResolvers
RequestToViewNameTranslator
LocaleResolver
ThemResolver
MultipartFileResolver
FlashMapManager(重定向不能传值,但通过参数中转(FlashMapManager的功能)可以,解决参数不放在url里不能传递的问题)
配置
初始化:初始化容器-初始化九大组件
执行过程:doService->doDispatch->getHandler(返回handlerMapping,执行链)->getHandlerAdapter(参数解析找到方法)->preHandler(自定义的前置拦截器)->handle(RequestMappingHandlerAdapter获得modleAndView)->postHandler(后置拦截器处理返回数据)->processDispatchResult(处理具体成HTML或JSP或模版引擎能识别的数据)->render(解析返回视图,并返回到页面)
优化: 1.controller,尽量保持单例(使用基本类型当参数)。
2.使用@requestParam,避免直接使用对象,较消耗性能。
3.没对url和method关系进行缓存(为了热部署),对url,method关系进行缓存(在请求拦截的时候接入)