-
Notifications
You must be signed in to change notification settings - Fork 41.6k
Closed
Description
Hey!
Spring Boot 4.0.0-SNAPSHOT
Interface WebClient.Builder has method apply(). It would be fine, to see it also for ClientHttpConnectorBuilder ❤️
Current methods starting with prefix with doesn't accept Consumer<ReactorClientHttpConnectorBuilder> as a paremeter.
For global customizers I can use WebClientCustomizer and ClientHttpConnectorBuilderCustomizer but I want apply some specific configuration per given WebClient
class WebClientConfig {
private final WebClient.Builder webClientBuilder;
private final ReactorClientHttpConnectorBuilder reactorClientHttpConnectorBuilder;
private final SpecificWebClientInstanceConfig specificWebClientInstanceConfig;
WebClientConfig(WebClient.Builder webClientBuilder, ReactorClientHttpConnectorBuilder reactorClientHttpConnectorBuilder, SpecificWebClientInstanceConfig specificWebClientInstanceConfig) {
this.webClientBuilder = webClientBuilder;
this.reactorClientHttpConnectorBuilder = reactorClientHttpConnectorBuilder;
this.specificWebClientInstanceConfig = specificWebClientInstanceConfig;
}
public WebClient createWebClient() {
return this.webClientBuilder
.apply(this.specificWebClientInstanceConfig.applyWebClientDefaults())
.clientConnector(
// Current way
this.specificWebClientInstanceConfig
.applyReactorConnectorDefaults(this.reactorClientHttpConnectorBuilder)
.build()
// Expected way
// this.reactorClientHttpConnectorBuilder
// .apply(this.specificWebClientInstanceConfig.applyReactorConnectorDefaults())
// .build()
)
.build();
}
}
class SpecificWebClientInstanceConfig {
Consumer<WebClient.Builder> applyWebClientDefaults() {
return builder -> {
};
}
// current way
ReactorClientHttpConnectorBuilder applyReactorConnectorDefaults(
ReactorClientHttpConnectorBuilder reactorClientHttpConnectorBuilder) {
return reactorClientHttpConnectorBuilder;
}
// expected way
Consumer<ReactorClientHttpConnectorBuilder> applyReactorConnectorDefaults() {
return builder -> {
};
}
}Please let me know what do you think about this.
I can contribute to this 🫡
Metadata
Metadata
Assignees
Labels
type: enhancementA general enhancementA general enhancement