Skip to content

Commit cdd86a4

Browse files
committed
GH-855 - Enable Kafka JSON rendering with default ObjectMapper.
In case no ObjectMapper bean instance is present, we now fall back to creating a default one to render a JSON byte array. This is useful in case Jackson is on the class path but not necessarily the JacksonObjectMapperBuilder, which is located in spring-web.
1 parent 2c9fc4b commit cdd86a4

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

spring-modulith-events/spring-modulith-events-kafka/src/main/java/org/springframework/modulith/events/kafka/KafkaJacksonConfiguration.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,17 @@
1515
*/
1616
package org.springframework.modulith.events.kafka;
1717

18+
import org.springframework.beans.factory.ObjectProvider;
1819
import org.springframework.boot.autoconfigure.AutoConfiguration;
19-
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
20+
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
2021
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
2122
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
2223
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
24+
import org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration;
2325
import org.springframework.context.annotation.Bean;
2426
import org.springframework.context.annotation.PropertySource;
2527
import org.springframework.kafka.support.converter.ByteArrayJsonMessageConverter;
26-
import org.springframework.kafka.support.converter.JsonMessageConverter;
28+
import org.springframework.kafka.support.converter.RecordMessageConverter;
2729

2830
import com.fasterxml.jackson.databind.ObjectMapper;
2931

@@ -34,15 +36,15 @@
3436
* @since 1.1
3537
*/
3638
@AutoConfiguration
39+
@AutoConfigureBefore(KafkaAutoConfiguration.class)
3740
@ConditionalOnClass(ObjectMapper.class)
3841
@ConditionalOnProperty(name = "spring.modulith.events.kafka.enable-json", havingValue = "true", matchIfMissing = true)
3942
@PropertySource("classpath:kafka-json.properties")
4043
class KafkaJacksonConfiguration {
4144

4245
@Bean
43-
@ConditionalOnBean(ObjectMapper.class)
44-
@ConditionalOnMissingBean(JsonMessageConverter.class)
45-
ByteArrayJsonMessageConverter jsonMessageConverter(ObjectMapper mapper) {
46-
return new ByteArrayJsonMessageConverter(mapper);
46+
@ConditionalOnMissingBean(RecordMessageConverter.class)
47+
ByteArrayJsonMessageConverter jsonMessageConverter(ObjectProvider<ObjectMapper> mapper) {
48+
return new ByteArrayJsonMessageConverter(mapper.getIfUnique(() -> new ObjectMapper()));
4749
}
4850
}

0 commit comments

Comments
 (0)