Affects: SpringBoot 3.0.3/Spring Framework 6.0.5

I have multiple WebClient instances that uses a target's name without a scheme. Ex:

var client = WebClient.builder().baseUrl("service1").build();

client.get().retrieve().bodyToMono(String.class)...

With SpringBoot 3.0.2 and below (including all current version of SpringBoot 2.x including 2.7.9), the above code will resolve service1 to a DNS name and execute the GET request and expected.

As I upgrade to SpringBoot 3.0.3, the above code will now throw an exception with the following error:

Caused by: java.lang.IllegalArgumentException: URI is not absolute: service1

It appears the framework is expecting the target name to now include a scheme prefix such as http:// or https://. Is this behavior an intended change or a bug?

Comment From: rstoyanchev

This is due to dd3dc2d0 from #29954. It looks like Reactor Netty's HttpClient is less strict when the URI is provided as a String, and fills in some defaults in UriEndpointFactory.

We can check if the URI is absolute, and if not, fall back on uri.toString() as it was before 6.0.5.