diff --git a/spring-modulith-events/spring-modulith-events-kafka/src/main/java/org/springframework/modulith/events/kafka/KafkaJacksonConfiguration.java b/spring-modulith-events/spring-modulith-events-kafka/src/main/java/org/springframework/modulith/events/kafka/KafkaJacksonConfiguration.java index 144ed793..fb6647e2 100644 --- a/spring-modulith-events/spring-modulith-events-kafka/src/main/java/org/springframework/modulith/events/kafka/KafkaJacksonConfiguration.java +++ b/spring-modulith-events/spring-modulith-events-kafka/src/main/java/org/springframework/modulith/events/kafka/KafkaJacksonConfiguration.java @@ -15,15 +15,17 @@ */ package org.springframework.modulith.events.kafka; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.AutoConfiguration; -import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; +import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.PropertySource; import org.springframework.kafka.support.converter.ByteArrayJsonMessageConverter; -import org.springframework.kafka.support.converter.JsonMessageConverter; +import org.springframework.kafka.support.converter.RecordMessageConverter; import com.fasterxml.jackson.databind.ObjectMapper; @@ -34,15 +36,15 @@ import com.fasterxml.jackson.databind.ObjectMapper; * @since 1.1 */ @AutoConfiguration +@AutoConfigureBefore(KafkaAutoConfiguration.class) @ConditionalOnClass(ObjectMapper.class) @ConditionalOnProperty(name = "spring.modulith.events.kafka.enable-json", havingValue = "true", matchIfMissing = true) @PropertySource("classpath:kafka-json.properties") class KafkaJacksonConfiguration { @Bean - @ConditionalOnBean(ObjectMapper.class) - @ConditionalOnMissingBean(JsonMessageConverter.class) - ByteArrayJsonMessageConverter jsonMessageConverter(ObjectMapper mapper) { - return new ByteArrayJsonMessageConverter(mapper); + @ConditionalOnMissingBean(RecordMessageConverter.class) + ByteArrayJsonMessageConverter jsonMessageConverter(ObjectProvider mapper) { + return new ByteArrayJsonMessageConverter(mapper.getIfUnique(() -> new ObjectMapper())); } }