diff --git a/module/spring-boot-gson/src/main/java/org/springframework/boot/gson/autoconfigure/GsonAutoConfiguration.java b/module/spring-boot-gson/src/main/java/org/springframework/boot/gson/autoconfigure/GsonAutoConfiguration.java index dc2a57abf727..845cd766d47a 100644 --- a/module/spring-boot-gson/src/main/java/org/springframework/boot/gson/autoconfigure/GsonAutoConfiguration.java +++ b/module/spring-boot-gson/src/main/java/org/springframework/boot/gson/autoconfigure/GsonAutoConfiguration.java @@ -16,13 +16,13 @@ package org.springframework.boot.gson.autoconfigure; -import java.util.List; import java.util.function.Consumer; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.Strictness; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; @@ -47,9 +47,9 @@ public final class GsonAutoConfiguration { @Bean @ConditionalOnMissingBean - GsonBuilder gsonBuilder(List customizers) { + GsonBuilder gsonBuilder(ObjectProvider customizers) { GsonBuilder builder = new GsonBuilder(); - customizers.forEach((c) -> c.customize(builder)); + customizers.orderedStream().forEach((c) -> c.customize(builder)); return builder; } diff --git a/module/spring-boot-jackson/src/main/java/org/springframework/boot/jackson/autoconfigure/JacksonAutoConfiguration.java b/module/spring-boot-jackson/src/main/java/org/springframework/boot/jackson/autoconfigure/JacksonAutoConfiguration.java index d914cd68f8b6..6a5989798050 100644 --- a/module/spring-boot-jackson/src/main/java/org/springframework/boot/jackson/autoconfigure/JacksonAutoConfiguration.java +++ b/module/spring-boot-jackson/src/main/java/org/springframework/boot/jackson/autoconfigure/JacksonAutoConfiguration.java @@ -99,18 +99,12 @@ JacksonComponentModule jsonComponentModule() { @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) @ConditionalOnMissingBean - JsonMapper.Builder jsonMapperBuilder(List customizers) { + JsonMapper.Builder jsonMapperBuilder(ObjectProvider customizers) { JsonMapper.Builder builder = JsonMapper.builder(); - customize(builder, customizers); + customizers.orderedStream().forEach((customizer) -> customizer.customize(builder)); return builder; } - private void customize(JsonMapper.Builder builder, List customizers) { - for (JsonMapperBuilderCustomizer customizer : customizers) { - customizer.customize(builder); - } - } - @Bean @Primary @ConditionalOnMissingBean @@ -200,18 +194,12 @@ CBORMapper cborMapper(CBORMapper.Builder builder) { @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) @ConditionalOnMissingBean - CBORMapper.Builder cborMapperBuilder(List customizers) { + CBORMapper.Builder cborMapperBuilder(ObjectProvider customizers) { CBORMapper.Builder builder = CBORMapper.builder(); - customize(builder, customizers); + customizers.orderedStream().forEach((customizer) -> customizer.customize(builder)); return builder; } - private void customize(CBORMapper.Builder builder, List customizers) { - for (CborMapperBuilderCustomizer customizer : customizers) { - customizer.customize(builder); - } - } - @Bean StandardCborMapperBuilderCustomizer standardCborMapperBuilderCustomizer(JacksonProperties jacksonProperties, ObjectProvider modules, JacksonCborProperties cborProperties) { @@ -255,18 +243,12 @@ XmlMapper xmlMapper(XmlMapper.Builder builder) { @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) @ConditionalOnMissingBean - XmlMapper.Builder xmlMapperBuilder(List customizers) { + XmlMapper.Builder xmlMapperBuilder(ObjectProvider customizers) { XmlMapper.Builder builder = XmlMapper.builder(); - customize(builder, customizers); + customizers.orderedStream().forEach((customizer) -> customizer.customize(builder)); return builder; } - private void customize(XmlMapper.Builder builder, List customizers) { - for (XmlMapperBuilderCustomizer customizer : customizers) { - customizer.customize(builder); - } - } - @Bean StandardXmlMapperBuilderCustomizer standardXmlMapperBuilderCustomizer(JacksonProperties jacksonProperties, ObjectProvider modules, JacksonXmlProperties xmlProperties) { diff --git a/module/spring-boot-jackson2/src/main/java/org/springframework/boot/jackson2/autoconfigure/Jackson2AutoConfiguration.java b/module/spring-boot-jackson2/src/main/java/org/springframework/boot/jackson2/autoconfigure/Jackson2AutoConfiguration.java index 138860f95dfa..ba1abe6e91bc 100644 --- a/module/spring-boot-jackson2/src/main/java/org/springframework/boot/jackson2/autoconfigure/Jackson2AutoConfiguration.java +++ b/module/spring-boot-jackson2/src/main/java/org/springframework/boot/jackson2/autoconfigure/Jackson2AutoConfiguration.java @@ -157,20 +157,14 @@ static class JacksonObjectMapperBuilderConfiguration { @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) @ConditionalOnMissingBean org.springframework.http.converter.json.Jackson2ObjectMapperBuilder jackson2ObjectMapperBuilder( - ApplicationContext applicationContext, List customizers) { + ApplicationContext applicationContext, + ObjectProvider customizers) { org.springframework.http.converter.json.Jackson2ObjectMapperBuilder builder = new org.springframework.http.converter.json.Jackson2ObjectMapperBuilder(); builder.applicationContext(applicationContext); - customize(builder, customizers); + customizers.orderedStream().forEach((customizer) -> customizer.customize(builder)); return builder; } - private void customize(org.springframework.http.converter.json.Jackson2ObjectMapperBuilder builder, - List customizers) { - for (Jackson2ObjectMapperBuilderCustomizer customizer : customizers) { - customizer.customize(builder); - } - } - } @Configuration(proxyBeanMethods = false) diff --git a/module/spring-boot-kotlinx-serialization-json/src/main/java/org/springframework/boot/kotlinx/serialization/json/autoconfigure/KotlinxSerializationJsonAutoConfiguration.java b/module/spring-boot-kotlinx-serialization-json/src/main/java/org/springframework/boot/kotlinx/serialization/json/autoconfigure/KotlinxSerializationJsonAutoConfiguration.java index 7350b29458cc..d92c5fee89db 100644 --- a/module/spring-boot-kotlinx-serialization-json/src/main/java/org/springframework/boot/kotlinx/serialization/json/autoconfigure/KotlinxSerializationJsonAutoConfiguration.java +++ b/module/spring-boot-kotlinx-serialization-json/src/main/java/org/springframework/boot/kotlinx/serialization/json/autoconfigure/KotlinxSerializationJsonAutoConfiguration.java @@ -16,7 +16,6 @@ package org.springframework.boot.kotlinx.serialization.json.autoconfigure; -import java.util.List; import java.util.function.Consumer; import kotlin.Unit; @@ -26,6 +25,7 @@ import kotlinx.serialization.json.JsonKt; import kotlinx.serialization.json.JsonNamingStrategy; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; @@ -48,9 +48,9 @@ public final class KotlinxSerializationJsonAutoConfiguration { @Bean @ConditionalOnMissingBean - Json kotlinSerializationJson(List customizers) { + Json kotlinSerializationJson(ObjectProvider customizers) { Function1 builderAction = (jsonBuilder) -> { - customizers.forEach((c) -> c.customize(jsonBuilder)); + customizers.orderedStream().forEach((customizer) -> customizer.customize(jsonBuilder)); return Unit.INSTANCE; }; return JsonKt.Json(Json.Default, builderAction); diff --git a/module/spring-boot-micrometer-tracing-brave/src/main/java/org/springframework/boot/micrometer/tracing/brave/autoconfigure/BraveAutoConfiguration.java b/module/spring-boot-micrometer-tracing-brave/src/main/java/org/springframework/boot/micrometer/tracing/brave/autoconfigure/BraveAutoConfiguration.java index 2ef97d87ceb6..c357f0503177 100644 --- a/module/spring-boot-micrometer-tracing-brave/src/main/java/org/springframework/boot/micrometer/tracing/brave/autoconfigure/BraveAutoConfiguration.java +++ b/module/spring-boot-micrometer-tracing-brave/src/main/java/org/springframework/boot/micrometer/tracing/brave/autoconfigure/BraveAutoConfiguration.java @@ -100,7 +100,7 @@ CompositeSpanHandler compositeSpanHandler(ObjectProvider @Bean @ConditionalOnMissingBean Tracing braveTracing(Environment environment, List spanHandlers, - List tracingCustomizers, CurrentTraceContext currentTraceContext, + ObjectProvider tracingCustomizers, CurrentTraceContext currentTraceContext, Factory propagationFactory, Sampler sampler) { if (this.braveTracingProperties.isSpanJoiningSupported()) { if (this.tracingProperties.getPropagation().getType() != null @@ -128,9 +128,7 @@ Tracing braveTracing(Environment environment, List spanHandlers, .sampler(sampler) .localServiceName(applicationName); spanHandlers.forEach(builder::addSpanHandler); - for (TracingCustomizer tracingCustomizer : tracingCustomizers) { - tracingCustomizer.customize(builder); - } + tracingCustomizers.orderedStream().forEach((customizer) -> customizer.customize(builder)); return builder.build(); } @@ -143,12 +141,10 @@ brave.Tracer braveTracer(Tracing tracing) { @Bean @ConditionalOnMissingBean CurrentTraceContext braveCurrentTraceContext(List scopeDecorators, - List currentTraceContextCustomizers) { + ObjectProvider currentTraceContextCustomizers) { ThreadLocalCurrentTraceContext.Builder builder = ThreadLocalCurrentTraceContext.newBuilder(); scopeDecorators.forEach(builder::addScopeDecorator); - for (CurrentTraceContextCustomizer currentTraceContextCustomizer : currentTraceContextCustomizers) { - currentTraceContextCustomizer.customize(builder); - } + currentTraceContextCustomizers.orderedStream().forEach((customizer) -> customizer.customize(builder)); return builder.build(); } diff --git a/module/spring-boot-resttestclient/src/main/java/org/springframework/boot/resttestclient/autoconfigure/RestTestClientTestAutoConfiguration.java b/module/spring-boot-resttestclient/src/main/java/org/springframework/boot/resttestclient/autoconfigure/RestTestClientTestAutoConfiguration.java index c8c11b49b726..ccb667c8d2f1 100644 --- a/module/spring-boot-resttestclient/src/main/java/org/springframework/boot/resttestclient/autoconfigure/RestTestClientTestAutoConfiguration.java +++ b/module/spring-boot-resttestclient/src/main/java/org/springframework/boot/resttestclient/autoconfigure/RestTestClientTestAutoConfiguration.java @@ -16,8 +16,6 @@ package org.springframework.boot.resttestclient.autoconfigure; -import java.util.List; - import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.AutoConfiguration; @@ -53,9 +51,9 @@ SpringBootRestTestClientBuilderCustomizer springBootRestTestClientBuilderCustomi @Bean @ConditionalOnMissingBean RestTestClient restTestClient(WebApplicationContext applicationContext, - List customizers) { + ObjectProvider customizers) { RestTestClient.Builder builder = getBuilder(applicationContext); - customizers.forEach((customizer) -> customizer.customize(builder)); + customizers.orderedStream().forEach((customizer) -> customizer.customize(builder)); return builder.build(); } diff --git a/module/spring-boot-webtestclient/src/main/java/org/springframework/boot/webtestclient/autoconfigure/WebTestClientAutoConfiguration.java b/module/spring-boot-webtestclient/src/main/java/org/springframework/boot/webtestclient/autoconfigure/WebTestClientAutoConfiguration.java index 494483af17ba..c0c86c85ffde 100644 --- a/module/spring-boot-webtestclient/src/main/java/org/springframework/boot/webtestclient/autoconfigure/WebTestClientAutoConfiguration.java +++ b/module/spring-boot-webtestclient/src/main/java/org/springframework/boot/webtestclient/autoconfigure/WebTestClientAutoConfiguration.java @@ -63,10 +63,10 @@ SpringBootWebTestClientBuilderCustomizer springBootWebTestClientBuilderCustomize @Bean @ConditionalOnMissingBean - WebTestClient webTestClient(ApplicationContext applicationContext, List customizers, - List configurers) { + WebTestClient webTestClient(ApplicationContext applicationContext, + ObjectProvider customizers, List configurers) { WebTestClient.Builder builder = getBuilder(applicationContext, configurers); - customizers.forEach((customizer) -> customizer.customize(builder)); + customizers.orderedStream().forEach((customizer) -> customizer.customize(builder)); return builder.build(); }