1 package org.springframework.cloud.client.serviceregistry;
2
3 import org.springframework.beans.factory.annotation.Autowired;
4 import org.springframework.boot.actuate.endpoint.annotation.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 }