I think, WebClient/WebTestClient(Builder) should be able to configure defaults through properties, especially timeout and especially for WebTestClient, since its a setup most people would tune in order to being able to debug for long time and not get a connection exception.
Kind of @AutoConfigureWebTestClient(timeout = "10000"), but through properties on a global scope.
My apologies if such a setup exists, I could not find it in issues nor spring-boot-properties docs
Comment From: philwebb
See also #31496
Comment From: philwebb
We're not totally sure that a property is the best solution, but it would be really nice if we could offer a better way to programmatically change the timeout for an individual WebClient.builder(). We'll need to do some more design work for this one and possibly request changes in spring-framework.
Comment From: nightswimmings
To be honest Phil, I think global would be convenient for WebClient , at least during test, since when debugging (at least webclient's non-reactive) communications, it's very annoying to get java.lang.IllegalStateException: Timeout on blocking read for X NANOSECONDS, every then and now. I'm not exactly sure of the internal mechanics of flux timings (maybe it's my fault on conceptual design), but I assume it's a matter of the lazy/future-evaluations chain because I never suffer them with servlet arch. But just my 2c as a heavy user
Comment From: nightswimmings
If this goes on, there is another property that would benefit from this, logging: https://stackoverflow.com/questions/46154994/how-to-log-spring-5-webclient-call
Comment From: mvitz
@philwebb any news about this one?
I was, internally, asked how to configure timeouts for the new RestClient.
My current solution is a RestClientCustomizer that sets a custom ClientHttpRequestFactory.
To rely on the default decision tree of Spring Boot which client library to use, I “stole” the ClientHttpRequestFactories.get(...) approach of the autoconfiguration.
Especially, reusing this logic was only possible because I looked into the source code of the autoconfiguration.
If not adding properties for configuring these timeouts, it would at least be a good idea to enhance the Spring Documentation about RestClient and include a hint to ClientHttpRequestFactories there.
Comment From: philwebb
@mvitz There's no update on this one yet I'm afraid
Comment From: mvitz
@philwebb Thanks for your quick reply. Anything I can do to help?
I understand that this case is special because configuring a builder via properties is not that common but on the other hand being able to easily configure things like timeouts would be useful, too.
I was thinking if something like spring.client.rest.default.connection.read-timeout would be an option.
In theory the matching @ConfigurationProperties-Class could be even reusable for configuring application specific instances.
Let me know if theres anything I can do to help/support.
Comment From: a1shadows
Is there anything I can do to help? This is a feature that would be super useful for us. SO question regarding the same: https://stackoverflow.com/questions/78675295/are-there-any-spring-properties-to-set-defaults-for-spring-webclient