使用该配置,您基本上可以:
- 使用参数或路径扩展忽略了内容协商
- 注册“ json-> application / json”“ xml-> application / xml”“ myXml-> application / xml”作为可能的路径扩展名/参数,以协商这些媒体类型。(在此了解更多信息)
- 告诉Spring MVC,每当HTTP客户端发送
"Accept: */*"
或根本不发送Accept标头时,默认ContentType应为“ application / xml”
我不认为您打算像这样处理内容协商。
您可能想要自定义HttpMessageConverters(请参见此处),例如注册一个
Jaxb2RootElementHttpMessageConverter(如果使用JAXB)或一个
MappingJackson2XmlHttpMessageConverter(如果使用Jackson)并使用“
application / xml”和“ myXml”媒体类型注册它们。
另外,不要忘记在RequestMapping批注的“产生”部分中添加“ myXml”-您的控制器方法应将其声明为可以产生的媒体类型,否则它将再次抛出406。
我的建议
您绝对应该使用诸如“ application / vnd.foobar.v.1.0 + xml”之类的媒体类型,因为:
- 这与http客户端有关
- Spring中的xml HttpMessageConverters已被注册以处理“ application / xml”和“ application / * + xml”。
在这种情况下,您可以将defaultContentType部分保留在配置中(并可能将其设置为自定义媒体类型),然后丢弃其余部分。
无论如何,您仍应在映射注释的Produces部分中声明此自定义媒体类型。



