diff --git a/module/spring-boot-http-codec/src/main/java/org/springframework/boot/http/codec/autoconfigure/CodecsAutoConfiguration.java b/module/spring-boot-http-codec/src/main/java/org/springframework/boot/http/codec/autoconfigure/CodecsAutoConfiguration.java index 7adbd522221..8b25159a81d 100644 --- a/module/spring-boot-http-codec/src/main/java/org/springframework/boot/http/codec/autoconfigure/CodecsAutoConfiguration.java +++ b/module/spring-boot-http-codec/src/main/java/org/springframework/boot/http/codec/autoconfigure/CodecsAutoConfiguration.java @@ -55,7 +55,8 @@ import org.springframework.web.reactive.function.client.WebClient; * @since 4.0.0 */ @AutoConfiguration(afterName = { "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration", - "org.springframework.boot.jackson2.autoconfigure.Jackson2AutoConfiguration" }) + "org.springframework.boot.jackson2.autoconfigure.Jackson2AutoConfiguration", + "org.springframework.boot.kotlinx.serialization.json.autoconfigure.KotlinxSerializationJsonAutoConfiguration" }) @ConditionalOnClass({ CodecConfigurer.class, WebClient.class }) public final class CodecsAutoConfiguration { diff --git a/module/spring-boot-http-codec/src/test/java/org/springframework/boot/http/codec/autoconfigure/CodecsAutoConfigurationTests.java b/module/spring-boot-http-codec/src/test/java/org/springframework/boot/http/codec/autoconfigure/CodecsAutoConfigurationTests.java index 2bb25145005..8463f8dcd28 100644 --- a/module/spring-boot-http-codec/src/test/java/org/springframework/boot/http/codec/autoconfigure/CodecsAutoConfigurationTests.java +++ b/module/spring-boot-http-codec/src/test/java/org/springframework/boot/http/codec/autoconfigure/CodecsAutoConfigurationTests.java @@ -27,6 +27,7 @@ import tools.jackson.databind.json.JsonMapper; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.http.codec.CodecCustomizer; +import org.springframework.boot.kotlinx.serialization.json.autoconfigure.KotlinxSerializationJsonAutoConfiguration; import org.springframework.boot.test.context.FilteredClassLoader; import org.springframework.boot.test.context.assertj.AssertableApplicationContext; import org.springframework.boot.test.context.runner.ApplicationContextRunner; @@ -170,6 +171,15 @@ class CodecsAutoConfigurationTests { }); } + @Test + void applyKotlinxSerializationJsonAutoConfigurationBeforeCodecsAutoConfiguration() { + this.contextRunner.withConfiguration(AutoConfigurations.of(KotlinxSerializationJsonAutoConfiguration.class)) + .run((context) -> { + Map codecCustomizers = context.getBeansOfType(CodecCustomizer.class); + assertThat(codecCustomizers).containsKey("kotlinxJsonCodecCustomizer"); + }); + } + @SuppressWarnings("unchecked") private T findEncoder(AssertableApplicationContext context, Class encoderClass) { ServerCodecConfigurer configurer = ServerCodecConfigurer.create();