|  | 
| 27 | 27 | import org.springframework.boot.autoconfigure.http.HttpMessageConverters; | 
| 28 | 28 | import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration; | 
| 29 | 29 | import org.springframework.boot.autoconfigure.http.client.HttpClientAutoConfiguration; | 
|  | 30 | +import org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration; | 
| 30 | 31 | import org.springframework.boot.http.client.ClientHttpRequestFactoryBuilder; | 
| 31 | 32 | import org.springframework.boot.http.client.ClientHttpRequestFactorySettings; | 
| 32 | 33 | import org.springframework.boot.http.client.ClientHttpRequestFactorySettings.Redirects; | 
|  | 
| 57 | 58 |  * @author Arjen Poutsma | 
| 58 | 59 |  * @author Moritz Halbritter | 
| 59 | 60 |  * @author Dmytro Nosan | 
|  | 61 | + * @author Dmitry Sulman | 
| 60 | 62 |  */ | 
| 61 | 63 | class RestClientAutoConfigurationTests { | 
| 62 | 64 | 
 | 
| @@ -287,16 +289,34 @@ void whenServletWebApplicationRestClientIsConfigured() { | 
| 287 | 289 | 
 | 
| 288 | 290 | 	@Test | 
| 289 | 291 | 	@EnabledForJreRange(min = JRE.JAVA_21) | 
| 290 |  | -	void whenReactiveWebApplicationAndVirtualThreadsAreEnabledOnJava21AndLaterRestClientIsConfigured() { | 
|  | 292 | +	void whenReactiveWebApplicationAndVirtualThreadsEnabledAndTaskExecutorBean() { | 
| 291 | 293 | 		new ReactiveWebApplicationContextRunner().withPropertyValues("spring.threads.virtual.enabled=true") | 
| 292 |  | -			.withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class)) | 
|  | 294 | +			.withConfiguration( | 
|  | 295 | +					AutoConfigurations.of(RestClientAutoConfiguration.class, TaskExecutionAutoConfiguration.class)) | 
| 293 | 296 | 			.run((context) -> { | 
| 294 | 297 | 				assertThat(context).hasSingleBean(HttpMessageConvertersRestClientCustomizer.class); | 
| 295 | 298 | 				assertThat(context).hasSingleBean(RestClientBuilderConfigurer.class); | 
| 296 | 299 | 				assertThat(context).hasSingleBean(RestClient.Builder.class); | 
| 297 | 300 | 			}); | 
| 298 | 301 | 	} | 
| 299 | 302 | 
 | 
|  | 303 | +	@Test | 
|  | 304 | +	@EnabledForJreRange(min = JRE.JAVA_21) | 
|  | 305 | +	void whenReactiveWebApplicationAndVirtualThreadsDisabled() { | 
|  | 306 | +		new ReactiveWebApplicationContextRunner().withPropertyValues("spring.threads.virtual.enabled=false") | 
|  | 307 | +			.withConfiguration( | 
|  | 308 | +					AutoConfigurations.of(RestClientAutoConfiguration.class, TaskExecutionAutoConfiguration.class)) | 
|  | 309 | +			.run((context) -> assertThat(context).doesNotHaveBean(RestClient.Builder.class)); | 
|  | 310 | +	} | 
|  | 311 | + | 
|  | 312 | +	@Test | 
|  | 313 | +	@EnabledForJreRange(min = JRE.JAVA_21) | 
|  | 314 | +	void whenReactiveWebApplicationAndVirtualThreadsEnabledAndNoTaskExecutorBean() { | 
|  | 315 | +		new ReactiveWebApplicationContextRunner().withPropertyValues("spring.threads.virtual.enabled=true") | 
|  | 316 | +			.withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class)) | 
|  | 317 | +			.run((context) -> assertThat(context).doesNotHaveBean(RestClient.Builder.class)); | 
|  | 318 | +	} | 
|  | 319 | + | 
| 300 | 320 | 	@Configuration(proxyBeanMethods = false) | 
| 301 | 321 | 	static class CodecConfiguration { | 
| 302 | 322 | 
 | 
|  | 
0 commit comments