2017-06-01 40 views
0

我正在使用xml和基于代码的配置的混合。我的代码配置的一部分被忽略。这一个:Spring MVC,MessageConverters,代码配置忽略

@Configuration 
@EnableWebMvc 
public class RestMvcConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { 
     converters.add(converter()); 
     super.configureMessageConverters(converters); 
    } 

    @Bean 
    public MappingJackson2HttpMessageConverter converter() { 
     ObjectMapper mapper = new ObjectMapper(); 
     mapper.registerModule(new JodaModule()); 
     mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); 

     MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); 
     converter.setObjectMapper(mapper); 

     return converter; 
    } 
} 

我调试于Spring MVC应用程序启动时configureMessageConverters()方法,它是执行。尽管如此,我在控制器中的JSON响应不会将Joda LocalDate转换为字符串表示形式,但会返回整个对象结构。

为什么忽略它?

回答

0

使用xml和基于代码的配置相结合,很容易导致配置一件事情两次,使Spring覆盖以前的配置。在我的情况,这是由于MVC中的XML也被配置为:

<context:component-scan base-package="uk.co.imperatives.billing.rest" /> 
<mvc:annotation-driven /> 
<context:annotation-config /> 

因此,在这种情况下,XML配置重置了我的代码配置。删除<mvc:annotation-driven />解决了这个问题。所以,这工作:

<context:component-scan base-package="uk.co.imperatives.billing.rest" /> 
<context:annotation-config />