2017-06-01 4 views
0

Ich verwende eine Mischung aus XML und codebasierter Konfiguration. Ein Teil meiner Code-Konfiguration wurde ignoriert. Dieses:Spring MVC, MessageConverter, Code Konfiguration Ignoriert

@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; 
    } 
} 

ich debuggen die configureMessageConverters() Methode beim Starten des Spring MVC app, und es wird ausgeführt. Meine JSON-Antworten in den Controllern konvertieren jedoch Joda LocalDate nicht in eine String-Darstellung, sondern geben die gesamte Objektstruktur zurück.

Warum wird es ignoriert?

Antwort

0

Mit einer Kombination aus XML- und code-basierter Konfiguration ist es einfach, in einer Situation zu landen, in der Sie eine Sache zweimal konfigurieren, wodurch Spring die vorherigen Konfigurationen überschreibt. In meinem Fall war dies MVC wegen auch in der XML konfiguriert werden:

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

Also, in diesem Fall wird die XML-Konfiguration meines Code Konfiguration zurückgesetzt. Durch das Entfernen der <mvc:annotation-driven /> wurde das Problem behoben. Also, das hat funktioniert:

Verwandte Themen