Spring 4 Rest RequestMappingHandlerAdapter不保存已配置的MessageConverters

时间:2015-02-10 18:16:48

标签: spring rest spring-mvc jaxb2

我遇到配置RequestMappingHandlerAdapter的问题;这是在Spring 4.1.4 Restful WebService配置中使用的。当我配置RequestMappingHandlerAdapter消息转换器时,它不会使用我配置的消息转换器。我在RequestMappingHandlerAdapter.setMessageConverters(List<HttpMessageConverter<?>> messageConverters)方法和应用程序启动时添加了断点我看到这个方法被调用了三次。调用此方法的前两次它具有预配置的消息转换器,其中一个是Jaxb2RootElementHttpMessageConverter。第三次,通过application-context.xml bean配置使用我手动配置的消息转换器调用此方法。此时,我想我已经使用自己的配置成功重置了消息转换器;但事实并非如此,因为当我调用Restful WebService时,Spring调用Jaxb2RootElementHttpMessageConverter而不是我通过application-context.xml手动配置的MarshallingHttpMessageConverter。

所以我需要知道如何:

  1. 如何告诉Jaxb2RootElementHttpMessageConverter使用我配置的JAXB2Marshaller;配置为使用JAXBIntroductions,
  2. 在Spring 4.1.4中取消注册Jaxb2RootElementHttpMessageConverter,
  3. 告诉Spring 4.1.4何时看到XML数据使用MarshallingHttpMessageConverter而不是Jaxb2RootElementHttpMessageConverter,
  4. 创建我自己的Jaxb2RootElementHttpMessageConverter自定义版本,这样我就可以给它正确的JAXB2 Marshaller;配置为使用JAXBIntroductions或
  5. 获取RequestMappingHandlerAdapter仅使用我提供的配置。
  6. 我们非常感谢您对上述五个选项中任何一个的任何帮助。

    谢谢。

    Tonté

1 个答案:

答案 0 :(得分:0)

我也面临同样的问题。 您必须从上下文文件中删除mvcannotationDriven。 即使我们指定了转换器列表,它也会覆盖转换器。