自定义对象Map器的问题

bjg7j2ky  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(559)

此问题已在此处找到答案

将objectmapper注入spring kafka序列化器/反序列化器(3个答案)
昨天关门了。
我正在尝试向kafka主题发送一些消息,我想定制jackson objectmapper来序列化我的 LocalDateTime 就像这样 2021-07-08T16:43:02Z 但这两者都不是

  1. @Configuration
  2. public class WebConfiguration {
  3. ...
  4. @Bean
  5. public ObjectMapper objectMapper() {
  6. ObjectMapper mapper = new ObjectMapper();
  7. mapper.registerModule(new JavaTimeModule());
  8. mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
  9. return mapper;
  10. }
  11. }

还是这个

  1. spring:
  2. jackson:
  3. serialization:
  4. write-dates-as-timestamps: false

成功了,,
我总是在主题中收到一条消息,其中字段时间为

  1. "time": [
  2. 2021,
  3. 7,
  4. 8,
  5. 10,
  6. 46,
  7. 29,
  8. 598476000
  9. ]

应用程序.yaml

  1. spring:
  2. main:
  3. web-application-type: none
  4. kafka:
  5. bootstrap-servers: ${KAFKA_SERVERS}
  6. producer:
  7. key-serializer: org.apache.kafka.common.serialization.StringSerializer
  8. value-serializer: org.springframework.kafka.support.serializer.JsonSerializer
  9. ...
t9eec4r0

t9eec4r01#

实际上,将objectmapper注入SpringKafka序列化器/反序列化器可以工作,但我没有使用公认的答案

  1. @Configuration
  2. public class KafkaCustomizerConf implements DefaultKafkaProducerFactoryCustomizer {
  3. @Bean
  4. public ObjectMapper objectMapper() {
  5. ObjectMapper mapper = new ObjectMapper();
  6. mapper.registerModule(new JavaTimeModule());
  7. mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
  8. return mapper;
  9. }
  10. @Override
  11. public void customize(DefaultKafkaProducerFactory<?, ?> producerFactory) {
  12. producerFactory.setValueSerializer(new JsonSerializer<>(objectMapper()));
  13. }
  14. }
展开查看全部

相关问题