1 package org.springframework.cloud.client.serviceregistry; 2 3 import org.springframework.beans.factory.annotation.Autowired; 4 import org.springframework.boot.actuate.endpoint.Endpoint; 5 import org.springframework.boot.autoconfigure.AutoConfigureAfter; 6 import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; 7 import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; 8 import org.springframework.cloud.client.serviceregistry.endpoint.MultiServiceRegistryEndpoint; 9 import org.springframework.cloud.consul.serviceregistry.ConsulServiceRegistryAutoConfiguration; 10 import org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration; 11 import org.springframework.context.annotation.Bean; 12 import org.springframework.context.annotation.Configuration; 13 14 import java.util.List; 15 16 /** 17 * http://host:port/server-context-path/management-context-path/service-registry/instance-status 18 * 19 * in /META-INF/spring.factories 20 * see: {@link org.springframework.cloud.client.serviceregistry.ServiceRegistryAutoConfiguration} 21 * 22 * @author haolun zhang 23 */ 24 @Configuration 25 @AutoConfigureAfter({EurekaClientAutoConfiguration.class, ConsulServiceRegistryAutoConfiguration.class}) 26 public class MultiServiceRegistryAutoConfiguration { 27 28 // @ConditionalOnBean(ServiceRegistry.class) 29 // @ConditionalOnClass(Endpoint.class) 30 // protected class ServiceRegistryEndpointConfiguration { 31 // 32 // @Autowired(required = false) 33 // private Registration registration; 34 // 35 // @Bean 36 // public ServiceRegistryEndpoint serviceRegistryEndpoint(final ServiceRegistry serviceRegistry) { 37 // ServiceRegistryEndpoint endpoint = new ServiceRegistryEndpoint(serviceRegistry); 38 // endpoint.setRegistration(registration); 39 // return endpoint; 40 // } 41 // } 42 // 43 // @AutoConfigureAfter(ConsulServiceRegistryEndpointConfiguration.class) 44 // @ConditionalOnBean(EurekaServiceRegistry.class) 45 // @ConditionalOnClass(Endpoint.class) 46 // @ConditionalOnMissingBean(ServiceRegistryEndpoint.class) 47 // protected class EurekaServiceRegistryEndpointConfiguration { 48 // 49 // @Autowired(required = false) 50 // private EurekaRegistration registration; 51 // 52 // @Bean 53 // public ServiceRegistryEndpoint eurekaServiceRegistryEndpoint(final EurekaServiceRegistry serviceRegistry) { 54 // ServiceRegistryEndpoint endpoint = new ServiceRegistryEndpoint(serviceRegistry); 55 // endpoint.setRegistration(registration); 56 // return endpoint; 57 // } 58 // } 59 // 60 // @AutoConfigureBefore(EurekaServiceRegistryEndpointConfiguration.class) 61 // @ConditionalOnBean(ConsulServiceRegistry.class) 62 // @ConditionalOnClass(Endpoint.class) 63 // @ConditionalOnMissingBean(ServiceRegistryEndpoint.class) 64 // protected class ConsulServiceRegistryEndpointConfiguration { 65 // 66 // @Autowired(required = false) 67 // private ConsulRegistration registration; 68 // 69 // @Bean 70 // public ServiceRegistryEndpoint consulServiceRegistryEndpoint(final ConsulServiceRegistry serviceRegistry) { 71 // ServiceRegistryEndpoint endpoint = new ServiceRegistryEndpoint(serviceRegistry); 72 // endpoint.setRegistration(registration); 73 // return endpoint; 74 // } 75 // } 76 77 @ConditionalOnBean(ServiceRegistry.class) 78 @ConditionalOnClass(Endpoint.class) 79 protected class MultiServiceRegistryEndpointConfiguration { 80 81 @Autowired(required = false) 82 private List<Registration> registrations; 83 84 @Bean 85 public MultiServiceRegistryEndpoint serviceRegistryEndpoint(final List<ServiceRegistry> serviceRegistries) { 86 MultiServiceRegistryEndpoint endpoint = new MultiServiceRegistryEndpoint(serviceRegistries); 87 endpoint.setRegistrations(this.registrations); 88 return endpoint; 89 } 90 } 91 }