在控制器方法中是否可以获取当前使用的MessageConverter?

时间:2015-05-06 09:19:06

标签: spring spring-mvc

我有一个控制器方法:

@RequestMapping(value = "/", method = RequestMethod.GET, produces = {
        "application/json", "application/xml" })
public @ResponseBody List<Foo> getAll(...)

我想知道,在控制器方法中,Spring Mvc将使用哪个策略/转换器处理当前的Http请求(选择生成xml或json)。

是否有像getCurrentMessageConverter()这样的方法?

1 个答案:

答案 0 :(得分:0)

这是由mvc设置的HttpMessageConverters的完整列表:annotation-driven:

  • ByteArrayHttpMessageConverter转换字节数组。
  • StringHttpMessageConverter转换字符串。
  • ResourceHttpMessageConverter为所有媒体类型转换为org.springframework.core.io.Resource。
  • SourceHttpMessageConverter转换为/来自javax.xml.transform.Source。
  • FormHttpMessageConverter将表单数据转换为MultiValueMap或从MultiValueMap转换表单数据。
  • Jaxb2RootElementHttpMessageConverter将Java对象转换为XML或从XML转换 - 如果存在JAXB2且类路径中不存在Jackson 2 XML扩展,则添加。
  • MappingJackson2HttpMessageConverter转换为/从JSON转换 - 如果类路径中存在Jackson 2,则添加。
  • MappingJackson2XmlHttpMessageConverter转换为XML或从XML转换 - 如果类路径中存在Jackson 2 XML扩展,则添加。
  • AtomFeedHttpMessageConverter转换Atom提要 - 如果类路径中存在Rome,则添加。
  • RssChannelHttpMessageConverter转换RSS Feed - 如果类路径中存在Rome,则会添加。

在您的情况下,Spring使用MappingJackson2XmlHttpMessageConverter将请求转换为json。