2016-03-22 6 views
2

Ich versuche, msgpack binary dataformat als Inhaltsverhandlungsoption hinzuzufügen. Die Json und Xml funktioniert gut aus der Box. Ich habe versucht, Jackson msgpack mapper als Bean hinzufügen, wie in this examle, aber es funktioniert nicht. Wenn ich Accept: application/x-msgpack Header zu meiner Anfrage hinzufügen 406 Not Acceptable Code zurückgegeben wird.Hinzufügen von msgpack als Inhaltsverhandlung zu Spring mvc + boot

Hier ist meine WebConfig:

@Configuration 
@EnableWebMvc 
@SuppressWarnings("unused") 
public class WebConfig extends WebMvcConfigurerAdapter { 

    @Bean 
    public HttpMessageConverter messagePackMessageConverter() { 
     return new AbstractJackson2HttpMessageConverter(
       new ObjectMapper(new MessagePackFactory()), 
       new MediaType("application", "x-msgpack")) { 
     }; 
    } 

    @Override 
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) { 
     configurer.favorPathExtension(false) 
       .ignoreAcceptHeader(false) 
       .favorParameter(true) 
       .defaultContentType(MediaType.APPLICATION_JSON) 
       .mediaType("xml", MediaType.APPLICATION_XML) 
       .mediaType("msgpack", new MediaType("application", "x-msgpack")); 
    } 

} 

ich keine besonderen Anmerkungen zu meinen DTO Objekte hinzugefügt haben, und mein Controller ist nichts aus dem Üblichen auch nicht.

Meine msgpack Abhängigkeit ist:

org.msgpack:jackson-dataformat-msgpack:0.7.0-p3 

Antwort

1

Anscheinend Bohne Injektion nicht funktioniert (ich würde mich freuen, wenn jemand mir gezeigt, wie Auto, um einen neuen HttpMessageConverter zu injizieren). Also habe ich es manuell hinzugefügt:

public class WebConfig extends WebMvcConfigurerAdapter { 


    @Override 
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { 
     converters.add(messagePackMessageConverter()); 
     converters.add(new MappingJackson2HttpMessageConverter()); 
     converters.add(new MappingJackson2XmlHttpMessageConverter()); 

     super.configureMessageConverters(converters); 
    } 

    //...