为什么在camel jackson starter中autodiscoverobjectmapper默认为false?

kadbb459  于 2021-07-05  发布在  Java
关注(0)|答案(1)|浏览(376)

目前,我们正在将应用程序从camel 2.x迁移到camel 3.x,并面临一个 JacksonDataFormat 没有使用 ObjectMapper 默认情况下,不再从应用程序上下文。相反,你需要提供一个属性 camel.dataformat.json-jackson.auto-discover-object-mapper=true 使此功能正常工作。我不明白为什么这不等于 true 默认情况下 camel-jackson-starter 模块,我觉得这不合逻辑。也许有人知道这背后的原因?

b0zn9rqh

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数据格式之间共享,因此可能会导致不一致或不可预测的行为。

相关问题