|
16 | 16 |
|
17 | 17 | package org.springframework.boot.restclient.autoconfigure.service;
|
18 | 18 |
|
| 19 | +import org.springframework.beans.factory.BeanClassLoaderAware; |
| 20 | +import org.springframework.beans.factory.ObjectProvider; |
19 | 21 | import org.springframework.boot.autoconfigure.AutoConfiguration;
|
| 22 | +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; |
20 | 23 | import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
21 | 24 | import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
| 25 | +import org.springframework.boot.http.client.ClientHttpRequestFactoryBuilder; |
| 26 | +import org.springframework.boot.http.client.ClientHttpRequestFactorySettings; |
22 | 27 | import org.springframework.boot.http.client.autoconfigure.HttpClientAutoConfiguration;
|
| 28 | +import org.springframework.boot.restclient.RestClientCustomizer; |
23 | 29 | import org.springframework.boot.restclient.autoconfigure.RestClientAutoConfiguration;
|
| 30 | +import org.springframework.boot.ssl.SslBundles; |
| 31 | +import org.springframework.context.annotation.Bean; |
24 | 32 | import org.springframework.context.annotation.Conditional;
|
25 |
| -import org.springframework.context.annotation.Import; |
| 33 | +import org.springframework.web.client.ApiVersionFormatter; |
| 34 | +import org.springframework.web.client.ApiVersionInserter; |
26 | 35 | import org.springframework.web.client.support.RestClientAdapter;
|
| 36 | +import org.springframework.web.service.registry.HttpServiceProxyRegistry; |
27 | 37 | import org.springframework.web.service.registry.ImportHttpServices;
|
28 | 38 |
|
29 | 39 | /**
|
|
39 | 49 | */
|
40 | 50 | @AutoConfiguration(after = { HttpClientAutoConfiguration.class, RestClientAutoConfiguration.class })
|
41 | 51 | @ConditionalOnClass(RestClientAdapter.class)
|
| 52 | +@ConditionalOnBean(HttpServiceProxyRegistry.class) |
42 | 53 | @Conditional(NotReactiveWebApplicationCondition.class)
|
43 | 54 | @EnableConfigurationProperties(HttpClientServiceProperties.class)
|
44 |
| -@Import({ ImportHttpServiceClientsConfiguration.class, RestClientHttpServiceClientConfiguration.class }) |
45 |
| -public final class HttpServiceClientAutoConfiguration { |
| 55 | +public final class HttpServiceClientAutoConfiguration implements BeanClassLoaderAware { |
| 56 | + |
| 57 | + @SuppressWarnings("NullAway.Init") |
| 58 | + private ClassLoader beanClassLoader; |
| 59 | + |
| 60 | + HttpServiceClientAutoConfiguration() { |
| 61 | + } |
| 62 | + |
| 63 | + @Override |
| 64 | + public void setBeanClassLoader(ClassLoader classLoader) { |
| 65 | + this.beanClassLoader = classLoader; |
| 66 | + } |
| 67 | + |
| 68 | + @Bean |
| 69 | + RestClientPropertiesHttpServiceGroupConfigurer restClientPropertiesHttpServiceGroupConfigurer( |
| 70 | + ObjectProvider<SslBundles> sslBundles, HttpClientServiceProperties serviceProperties, |
| 71 | + ObjectProvider<ClientHttpRequestFactoryBuilder<?>> clientFactoryBuilder, |
| 72 | + ObjectProvider<ClientHttpRequestFactorySettings> clientHttpRequestFactorySettings, |
| 73 | + ObjectProvider<ApiVersionInserter> apiVersionInserter, |
| 74 | + ObjectProvider<ApiVersionFormatter> apiVersionFormatter) { |
| 75 | + return new RestClientPropertiesHttpServiceGroupConfigurer(this.beanClassLoader, sslBundles, serviceProperties, |
| 76 | + clientFactoryBuilder, clientHttpRequestFactorySettings, apiVersionInserter, apiVersionFormatter); |
| 77 | + } |
| 78 | + |
| 79 | + @Bean |
| 80 | + RestClientCustomizerHttpServiceGroupConfigurer restClientCustomizerHttpServiceGroupConfigurer( |
| 81 | + ObjectProvider<RestClientCustomizer> customizers) { |
| 82 | + return new RestClientCustomizerHttpServiceGroupConfigurer(customizers); |
| 83 | + } |
46 | 84 |
|
47 | 85 | }
|
0 commit comments