View Javadoc
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  }