2016-03-22 18 views
2

私はコンテンツネゴシエーションオプションとしてmsgpackバイナリdataformatを追加しようとしています。 JsonとXmlはすぐに使えます。私はthis examleのように、jackson msgpackマッパーをbeanとして追加しようとしましたが、動作しません。私の要求にAccept: application/x-msgpackヘッダーを追加すると406 Not Acceptableコードが返されます。spring mvc + bootへのコンテンツネゴシエーションとしてmsgpackを追加

は、ここに私の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")); 
    } 

} 

私は私のDTOオブジェクトに特別な注釈を追加していない、と私のコントローラは、いずれかの普通の何物でもありません。

マイmsgpack依存性がある:

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

答えて

1

どうやら豆の注入は(誰かが自動新しいHttpMessageConverterを注入する方法を見せてくれたならば、私は喜んでいるだろう)動作しませんでした。だから手動で追加しました:

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

    //... 
関連する問題