2015-09-26 84 views
0

我真的堅持投下兔子對POJO的迴應。如何正確地做到這一點?在sprin.io只是沒有實際的例子。 所以我想這個春季4和RabbitMQ json類型

@Bean 
public DefaultClassMapper typeMapper() { 
    DefaultClassMapper typeMapper = new DefaultClassMapper(); 
    Map<String, Class> idClassMapping = new HashMap<String, Class>(); 
    idClassMapping.put("range", Loan.class); 
    typeMapper.setIdClassMapping(idClassMapping); 
    //typeMapper.setDefaultType(Loan.class); 
    return typeMapper; 
} 

@Bean 
    public MessageConverter messageConverter(DefaultClassMapper defaultClassMapper){ 
     JsonMessageConverter jsonMessageConverter = new JsonMessageConverter(); 
     jsonMessageConverter.setClassMapper(defaultClassMapper); 
     return jsonMessageConverter; 
    } 

「範圍」,其實從假貨示範值做到這一點。此外,這對於.setIdClassMapping()不起作用。此外,我不能使用默認的映射器,因爲服務發送頭沒有類型提示字段。而且我無法控制這臺遠程服務器。數據格式總是JSON。

Caused by: org.springframework.amqp.support.converter.MessageConversionException: failed to convert Message content. Could not resolve __TypeId__ in header 

編組/解碼Java對象的任何建議工作示例。我有完全不同的類從我的代碼發回價值。我正在使用java 8.

回答

0

只需編寫自己的ClassMapper - 如果您選擇類類型的決定標準與其內部版本不兼容,請不要使用默認值。

或者,您可以繼承DefaultClassMapper並覆蓋getClassIdFieldName()以告知它要使用哪個消息屬性。