Order kotlinxJsonCodecCustomizer so user-provided customizer can go after it

Closes gh-50428

Signed-off-by: Dmitry Sulman <dmitry.sulman@gmail.com>
This commit is contained in:
Dmitry Sulman
2026-07-16 14:52:42 +02:00
committed by Brian Clozel
parent 15bb54a41f
commit f83576eb29
2 changed files with 11 additions and 0 deletions
@@ -103,6 +103,7 @@ public final class CodecsAutoConfiguration {
static class KotlinxSerializationJsonCodecConfiguration {
@Bean
@Order(0)
@ConditionalOnBean(Json.class)
CodecCustomizer kotlinxJsonCodecCustomizer(Json json, ResourceLoader resourceLoader) {
ClassLoader classLoader = resourceLoader.getClassLoader();
@@ -160,6 +160,16 @@ class CodecsAutoConfigurationTests {
});
}
@Test
void userProvidedCustomizerCanOverrideKotlinxJsonCodecCustomizer() {
this.contextRunner.withUserConfiguration(KotlinxJsonConfiguration.class, CodecCustomizerConfiguration.class)
.run((context) -> {
List<CodecCustomizer> codecCustomizers = context.getBean(CodecCustomizers.class).codecCustomizers;
assertThat(codecCustomizers).hasSize(3);
assertThat(codecCustomizers.get(2)).isInstanceOf(TestCodecCustomizer.class);
});
}
@SuppressWarnings("unchecked")
private <T> T findEncoder(AssertableApplicationContext context, Class<T> encoderClass) {
ServerCodecConfigurer configurer = ServerCodecConfigurer.create();