2017-06-01 238 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 />