如何在 Spring Kafka producer/consumer 中自定义 Json(De)Serializer? (自我回应)

How to customize Json(De)Serializer in Spring Kafka producer/consumer? (self response)

正如 Spring 文档所建议的 here,您可以使用 ObjectMapper 自定义 Kafka 中 Json(De)Serializer 的行为,但它没有指定如何。

原来 Json(De)Serializer 有一个构造函数,它接受一个 ObjectMapper 作为 arg,所以你可以像这样注入 bean:

@Bean 
Deserializer jsonDeserializer(ObjectMapper objectMapper) {
    return new JsonDeserializer(objectMapper);
}

如所述here

另外,如果您需要添加可信包,您需要:

  • 从上下文中选择一个 ObjectMapper,将其传递给 json 序列化程序的 bean
  • @Bean方法中,添加可信包
  • 将这个 bean 传递给工厂以获得最终消费者

而上面的link也提到了如果你使用上下文属性获取Json(De)Serializer,它是由Kafka生成的,不知道任何上下文。