【发布时间】:2013-09-10 02:45:21
【问题描述】:
我正在努力让我的 Spring rest 应用程序可以同时处理 xml 和 json 响应,但似乎添加 Jaxb 消息转换器破坏了我的 json 映射。
@Bean
public MappingJackson2HttpMessageConverter jsonConverter() {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
SimpleModule simpleModule = new SimpleModule();
simpleModule.addSerializer(String.class, new StringSerializer());
ObjectMapper mapper = new ObjectMapper()
.registerModule(simpleModule);
converter.setObjectMapper(mapper);
return converter;
}
@Bean
public Jaxb2RootElementHttpMessageConverter jaxbConverter() {
return new Jaxb2RootElementHttpMessageConverter();
}
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(jsonConverter());
converters.add(jaxbConverter());
}
如果我在这里注释掉第二个和第三个方法,一切都会重新开始工作(当然除了 xml 映射!)。但是,有了这些,我就搞砸了,比如将List<String> 序列化为[APPLEORANGEBANANA],其中apple、orange 和banana 在列表中是单独的字符串。
如果我直接使用jackson对象映射器映射到json就没有这个问题,但是使用@ResponseBody注解自动序列化到json我就有这个问题了。
有人有什么想法吗?
【问题讨论】:
-
我想我的问题可能是
configureMessageConverters方法本身。把它拿出来,两者似乎都有效。 (现在正在处理一个休眠异常以确保它们确实如此。)