+
public class CustomLoadBalancerConfiguration {
+
+ @Bean
+ public ServiceInstanceListSupplier discoveryClientServiceInstanceListSupplier(
+ ReactiveDiscoveryClient discoveryClient, Environment environment,
+ ApplicationContext context) {
+ DiscoveryClientServiceInstanceListSupplier firstDelegate = new DiscoveryClientServiceInstanceListSupplier(
+ discoveryClient, environment);
+ ZonePreferenceServiceInstanceListSupplier delegate = new ZonePreferenceServiceInstanceListSupplier(firstDelegate,
+ environment);
+ ObjectProvider<LoadBalancerCacheManager> cacheManagerProvider = context
+ .getBeanProvider(LoadBalancerCacheManager.class);
+ if (cacheManagerProvider.getIfAvailable() != null) {
+ return new CachingServiceInstanceListSupplier(delegate,
+ cacheManagerProvider.getIfAvailable());
+ }
+ return delegate;
+ }
+
+}
+