通过逐步浏览Camel代码,我找到了解决方案。因此,尽管它可以满足我的要求,但它可能无法与Camel的将来版本一起使用,因为它似乎没有文档记录,并且可能不受支持。
我要做的就是将以下bean添加到我的Spring配置中,除了
ObjectMapper问题中的bean:
@Bean(name = "json-jackson")@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)public JacksonDataFormat jacksonDataFormat(ObjectMapper objectMapper) { return new JacksonDataFormat(objectMapper, HashMap.class);}
要注意的关键点:
- 有没有构造函数
JacksonDataFormat
接受一个ObjectMapper
无解组型。但是,在默认构造函数中,HashMap.class
当未提供非编组类型时使用a ,因此我使用它。通过某种魔术,这似乎可以用来解组所有POJO类型。如果您还需要其他类别的更具体的数据格式,则也需要ObjectMapper
在其中设置。 - Camel似乎在bean注册表中搜索了一个名为“ json-jackson”的bean,因此将Spring bean设置为使用该名称将使Camel欺骗而不创建一个新的bean,而是使用我的。
- 必须将Bean作用域设置为,
SCOPE_PROTOTYPE
因为REST DSL希望获得的新实例DataFormat
。请参阅CAMEL-7880。