2727import org .springframework .boot .autoconfigure .condition .ConditionalOnProperty ;
2828import org .springframework .boot .autoconfigure .condition .SearchStrategy ;
2929import org .springframework .boot .autoconfigure .http .codec .CodecsAutoConfiguration ;
30- import org .springframework .boot .autoconfigure .web .client .RestClientAutoConfiguration ;
3130import org .springframework .boot .autoconfigure .web .reactive .function .client .WebClientAutoConfiguration ;
3231import org .springframework .boot .context .properties .EnableConfigurationProperties ;
3332import org .springframework .boot .web .client .RestTemplateBuilder ;
3433import org .springframework .cloud .config .client .ConfigServerInstanceProvider ;
3534import org .springframework .cloud .config .client .ConfigServicePropertySourceLocator ;
3635import org .springframework .cloud .configuration .TlsProperties ;
3736import org .springframework .cloud .netflix .eureka .EurekaClientConfigBean ;
37+ import org .springframework .cloud .netflix .eureka .RestClientTimeoutProperties ;
3838import org .springframework .cloud .netflix .eureka .RestTemplateTimeoutProperties ;
3939import org .springframework .cloud .netflix .eureka .http .DefaultEurekaClientHttpRequestFactorySupplier ;
4040import org .springframework .cloud .netflix .eureka .http .EurekaClientHttpRequestFactorySupplier ;
6363@ ConditionalOnClass (ConfigServicePropertySourceLocator .class )
6464@ Conditional (EurekaConfigServerBootstrapConfiguration .EurekaConfigServerBootstrapCondition .class )
6565@ Configuration (proxyBeanMethods = false )
66- @ EnableConfigurationProperties (RestTemplateTimeoutProperties .class )
6766public class EurekaConfigServerBootstrapConfiguration {
6867
69- @ Bean
70- @ ConditionalOnMissingBean (value = EurekaClientConfig .class , search = SearchStrategy .CURRENT )
71- public EurekaClientConfigBean eurekaClientConfigBean () {
72- return new EurekaClientConfigBean ();
73- }
7468
75- @ Bean
76- @ ConditionalOnMissingBean (EurekaHttpClient .class )
77- @ Conditional (RestTemplateEnabledCondition .class )
78- public RestTemplateEurekaHttpClient configDiscoveryRestTemplateEurekaHttpClient (EurekaClientConfigBean config ,
79- Environment env , @ Nullable TlsProperties properties ,
80- EurekaClientHttpRequestFactorySupplier eurekaClientHttpRequestFactorySupplier ,
81- ObjectProvider <RestTemplateBuilder > restTemplateBuilders ) {
82- return (RestTemplateEurekaHttpClient ) new RestTemplateTransportClientFactory (properties ,
83- eurekaClientHttpRequestFactorySupplier , restTemplateBuilders ::getIfAvailable )
84- .newClient (HostnameBasedUrlRandomizer .randomEndpoint (config , env ));
85- }
69+ @ Configuration (proxyBeanMethods = false )
70+ @ ConditionalOnClass (name = "org.springframework.web.client.RestTemplate" )
71+ @ Conditional (RestTemplateConfiguration .RestTemplateEnabledCondition .class )
72+ @ EnableConfigurationProperties (RestTemplateTimeoutProperties .class )
73+ static class RestTemplateConfiguration {
8674
87- @ Bean
88- @ ConditionalOnMissingBean
89- EurekaClientHttpRequestFactorySupplier defaultEurekaClientHttpRequestFactorySupplier (
90- RestTemplateTimeoutProperties restTemplateTimeoutProperties ) {
91- return new DefaultEurekaClientHttpRequestFactorySupplier (restTemplateTimeoutProperties );
92- }
75+ @ Bean
76+ @ ConditionalOnMissingBean (value = EurekaClientConfig .class , search = SearchStrategy .CURRENT )
77+ public EurekaClientConfigBean eurekaClientConfigBean () {
78+ return new EurekaClientConfigBean ();
79+ }
80+
81+ @ Bean
82+ @ ConditionalOnMissingBean (EurekaHttpClient .class )
83+ @ Conditional (RestTemplateEnabledCondition .class )
84+ public RestTemplateEurekaHttpClient configDiscoveryRestTemplateEurekaHttpClient (EurekaClientConfigBean config ,
85+ Environment env , @ Nullable TlsProperties properties ,
86+ EurekaClientHttpRequestFactorySupplier eurekaClientHttpRequestFactorySupplier ,
87+ ObjectProvider <RestTemplateBuilder > restTemplateBuilders ) {
88+ return (RestTemplateEurekaHttpClient ) new RestTemplateTransportClientFactory (properties ,
89+ eurekaClientHttpRequestFactorySupplier , restTemplateBuilders ::getIfAvailable )
90+ .newClient (HostnameBasedUrlRandomizer .randomEndpoint (config , env ));
91+ }
92+
93+ @ Bean
94+ @ ConditionalOnMissingBean
95+ @ Conditional (RestTemplateEnabledCondition .class )
96+ EurekaClientHttpRequestFactorySupplier defaultEurekaClientHttpRequestFactorySupplier (
97+ RestTemplateTimeoutProperties restTemplateTimeoutProperties ) {
98+ return new DefaultEurekaClientHttpRequestFactorySupplier (restTemplateTimeoutProperties );
99+ }
100+
101+ @ Bean
102+ public ConfigServerInstanceProvider .Function eurekaConfigServerInstanceProvider (EurekaHttpClient client ,
103+ EurekaClientConfig config ) {
104+ return new EurekaConfigServerInstanceProvider (client , config )::getInstances ;
105+ }
106+
107+ static class RestTemplateEnabledCondition extends AllNestedConditions {
108+
109+ RestTemplateEnabledCondition () {
110+ super (ConfigurationPhase .REGISTER_BEAN );
111+ }
112+
113+ @ ConditionalOnProperty (prefix = "eureka.client" , name = "webclient.enabled" , matchIfMissing = true ,
114+ havingValue = "false" )
115+ static class OnWebClientDisabled {
116+
117+ }
118+
119+ @ ConditionalOnProperty (prefix = "eureka.client" , name = "restclient.enabled" , havingValue = "false" )
120+ static class OnRestClientDisabled {
121+
122+ }
123+
124+ }
93125
94- @ Bean
95- public ConfigServerInstanceProvider .Function eurekaConfigServerInstanceProvider (EurekaHttpClient client ,
96- EurekaClientConfig config ) {
97- return new EurekaConfigServerInstanceProvider (client , config )::getInstances ;
98126 }
99127
100128 @ Configuration (proxyBeanMethods = false )
@@ -115,54 +143,53 @@ public WebClientEurekaHttpClient configDiscoveryWebClientEurekaHttpClient(Eureka
115143
116144 @ Configuration (proxyBeanMethods = false )
117145 @ ConditionalOnClass (name = "org.springframework.web.client.RestClient" )
118- @ Conditional (RestClientEnabledCondition .class )
119- @ ImportAutoConfiguration ( RestClientAutoConfiguration .class )
120- protected static class RestClientConfiguration {
146+ @ Conditional (RestClientConfiguration . RestClientEnabledCondition .class )
147+ @ EnableConfigurationProperties ( RestClientTimeoutProperties .class )
148+ static class RestClientConfiguration {
121149
122150 @ Bean
123151 @ ConditionalOnMissingBean (EurekaHttpClient .class )
124152 public RestClientEurekaHttpClient configDiscoveryRestClientEurekaHttpClient (EurekaClientConfigBean config ,
153+ @ Nullable TlsProperties properties ,
154+ EurekaClientHttpRequestFactorySupplier eurekaClientHttpRequestFactorySupplier ,
125155 ObjectProvider <RestClient .Builder > builder , Environment env ) {
126- return (RestClientEurekaHttpClient ) new RestClientTransportClientFactory (builder ::getIfAvailable )
156+ return (RestClientEurekaHttpClient ) new RestClientTransportClientFactory (properties ,
157+ eurekaClientHttpRequestFactorySupplier ,
158+ builder ::getIfAvailable )
127159 .newClient (HostnameBasedUrlRandomizer .randomEndpoint (config , env ));
128160 }
129161
130- }
131-
132- static class RestTemplateEnabledCondition extends AllNestedConditions {
133-
134- RestTemplateEnabledCondition () {
135- super (ConfigurationPhase .REGISTER_BEAN );
162+ @ Bean
163+ @ ConditionalOnMissingBean
164+ EurekaClientHttpRequestFactorySupplier defaultEurekaClientHttpRequestFactorySupplier (
165+ RestClientTimeoutProperties restClientTimeoutProperties ) {
166+ return new DefaultEurekaClientHttpRequestFactorySupplier (restClientTimeoutProperties );
136167 }
137168
138- @ ConditionalOnProperty ( prefix = "eureka.client" , name = "webclient.enabled" , matchIfMissing = true ,
139- havingValue = "false" )
140- static class OnWebClientDisabled {
141-
169+ @ Bean
170+ @ ConditionalOnMissingBean ( value = EurekaClientConfig . class , search = SearchStrategy . CURRENT )
171+ public EurekaClientConfigBean eurekaClientConfigBean () {
172+ return new EurekaClientConfigBean ();
142173 }
143174
144- @ ConditionalOnProperty (prefix = "eureka.client" , name = "restclient.enabled" , havingValue = "false" )
145- static class OnRestClientDisabled {
146175
147- }
176+ static class RestClientEnabledCondition extends AllNestedConditions {
148177
149- }
178+ RestClientEnabledCondition () {
179+ super (ConfigurationPhase .REGISTER_BEAN );
180+ }
150181
151- static class RestClientEnabledCondition extends AllNestedConditions {
182+ @ ConditionalOnProperty (prefix = "eureka.client" , name = "webclient.enabled" , matchIfMissing = true ,
183+ havingValue = "false" )
184+ static class OnWebClientDisabled {
152185
153- RestClientEnabledCondition () {
154- super (ConfigurationPhase .REGISTER_BEAN );
155- }
186+ }
156187
157- @ ConditionalOnProperty (prefix = "eureka.client" , name = "webclient.enabled" , matchIfMissing = true ,
158- havingValue = "false" )
159- static class OnWebClientDisabled {
160-
161- }
188+ @ ConditionalOnProperty (prefix = "eureka.client" , name = "restclient.enabled" , matchIfMissing = true ,
189+ havingValue = "true" )
190+ static class OnRestClientEnabled {
162191
163- @ ConditionalOnProperty (prefix = "eureka.client" , name = "restclient.enabled" , matchIfMissing = true ,
164- havingValue = "true" )
165- static class OnRestClientEnabled {
192+ }
166193
167194 }
168195
0 commit comments