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 a0e71cac86a0..7adbd5222219 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 @@ -103,6 +103,7 @@ CodecCustomizer jackson2CodecCustomizer(ObjectMapper objectMapper) { static class KotlinxSerializationJsonCodecConfiguration { @Bean + @Order(0) @ConditionalOnBean(Json.class) CodecCustomizer kotlinxJsonCodecCustomizer(Json json, ResourceLoader resourceLoader) { ClassLoader classLoader = resourceLoader.getClassLoader(); 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 4e58f4404ad9..92291ddbfe3b 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 @@ -159,6 +159,16 @@ void kotlinSerializationUsesUnrestrictedPredicateWhenNoOtherJsonConverterIsAvail }); } + @Test + void userProvidedCustomizerCanOverrideKotlinxJsonCodecCustomizer() { + this.contextRunner.withUserConfiguration(KotlinxJsonConfiguration.class, CodecCustomizerConfiguration.class) + .run((context) -> { + List codecCustomizers = context.getBean(CodecCustomizers.class).codecCustomizers; + assertThat(codecCustomizers).hasSize(3); + assertThat(codecCustomizers.get(2)).isInstanceOf(TestCodecCustomizer.class); + }); + } + @SuppressWarnings("unchecked") private T findEncoder(AssertableApplicationContext context, Class encoderClass) { ServerCodecConfigurer configurer = ServerCodecConfigurer.create();