1. 目录
[TOC]
2. 说明
请求适配器主要是处理返回数据的格式问题,即Controller返回的数据对象是视图还是数据,或对数据格式化等
3. 依赖分析
4. 源码分析
从springmvc启动流程可以知道,springmvc请求适配是在initHandlerAdapters()
中初始化的
4.1. initHandlerAdapters()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| private void initHandlerAdapters(ApplicationContext context) { this.handlerAdapters = null;
if (this.detectAllHandlerAdapters) { Map<String, HandlerAdapter> matchingBeans = BeanFactoryUtils.beansOfTypeIncludingAncestors(context, HandlerAdapter.class, true, false); if (!matchingBeans.isEmpty()) { this.handlerAdapters = new ArrayList<>(matchingBeans.values()); AnnotationAwareOrderComparator.sort(this.handlerAdapters); } } else { try { HandlerAdapter ha = context.getBean(HANDLER_ADAPTER_BEAN_NAME, HandlerAdapter.class); this.handlerAdapters = Collections.singletonList(ha); } catch (NoSuchBeanDefinitionException ex) { } }
if (this.handlerAdapters == null) { this.handlerAdapters = getDefaultStrategies(context, HandlerAdapter.class); if (logger.isTraceEnabled()) { logger.trace("No HandlerAdapters declared for servlet '" + getServletName() + "': using default strategies from DispatcherServlet.properties"); } } }
|
默认初始化的HandlerAdaptor
为RequestMappingHnadlerAdaptor
5. 总结
6. 注意事项