目前,我们正在将应用程序从camel 2.x迁移到camel 3.x,并面临一个 JacksonDataFormat
没有使用 ObjectMapper
默认情况下,不再从应用程序上下文。相反,你需要提供一个属性 camel.dataformat.json-jackson.auto-discover-object-mapper=true
使此功能正常工作。我不明白为什么这不等于 true
默认情况下 camel-jackson-starter
模块,我觉得这不合逻辑。也许有人知道这背后的原因?
1条答案
按热度按时间b0zn9rqh1#
apache camel正在修改
ObjectMapper
bean属性取决于JacksonDataFormat
定义。这真是令人困惑,如果看似无关紧要DataFormat
定义正在改变你的单身ObjectMapper
您可能已经为应用程序的不同部分配置了。这对一些开发人员来说可能是出乎意料的,因此决定在启动期间快速失败。如果您使用多个
JacksonDataFormat
定义,从不设置camel.dataformat.json-jackson.auto-discover-object-mapper=true
. 您将看到一些奇怪的行为,这将是非常难以调试的。见camel-14101:
json-jackson数据格式的当前默认行为是尝试在注册表中查找objectmapper示例,如果找不到则创建一个新示例。如果找到一个,数据格式示例会根据其本地属性对其进行自定义,但由于同一objectmapper示例可能在不同的json数据格式之间共享,因此可能会导致不一致或不可预测的行为。