diff --git a/docs/src/main/asciidoc/spring-cloud-zookeeper.adoc b/docs/src/main/asciidoc/spring-cloud-zookeeper.adoc index 1fc3f535..fa04c1b8 100644 --- a/docs/src/main/asciidoc/spring-cloud-zookeeper.adoc +++ b/docs/src/main/asciidoc/spring-cloud-zookeeper.adoc @@ -15,6 +15,10 @@ Please see the http://zookeeper.apache.org/doc/current/zookeeperStarted.html[ins Service Discovery is one of the key tenets of a microservice based architecture. Trying to hand configure each client or some form of convention can be very difficult to do and can be very brittle. http://curator.apache.org[Curator](A java library for Zookeeper) provides Service Discovery services via http://curator.apache.org/curator-x-discovery/[Service Discovery Extension]. Spring Cloud Zookeeper leverages this extension for service registration and discovery. +=== How to activate + +Including a dependency on `org.springframework.cloud:spring-cloud-starter-zookeeper-discovery` will enable auto-configuration that will setup Spring Cloud Zookeeper Discovery. + === Registering with Zookeeper When a client registers with Zookeeper, it provides meta-data about itself such as host and port, id and name. @@ -93,7 +97,7 @@ Configuration is currently read on startup of the application. Sending a HTTP P === How to activate -Including a dependency on `org.springframework.cloud:spring-cloud-zookeeper-config` will enable auto-configuration that will setup Spring Cloud Zookeeper Config. +Including a dependency on `org.springframework.cloud:spring-cloud-starter-zookeeper-config` will enable auto-configuration that will setup Spring Cloud Zookeeper Config. === Customizing diff --git a/pom.xml b/pom.xml index e86af299..78469d65 100644 --- a/pom.xml +++ b/pom.xml @@ -34,6 +34,10 @@ spring-cloud-zookeeper-core spring-cloud-zookeeper-config spring-cloud-zookeeper-discovery + spring-cloud-starter-zookeeper + spring-cloud-starter-zookeeper-config + spring-cloud-starter-zookeeper-discovery + spring-cloud-starter-zookeeper-all spring-cloud-zookeeper-sample docs @@ -93,6 +97,26 @@ spring-cloud-zookeeper-discovery ${project.version} + + org.springframework.cloud + spring-cloud-starter-zookeeper + ${project.version} + + + org.springframework.cloud + spring-cloud-starter-zookeeper-all + ${project.version} + + + org.springframework.cloud + spring-cloud-starter-zookeeper-config + ${project.version} + + + org.springframework.cloud + spring-cloud-starter-zookeeper-discovery + ${project.version} + org.springframework.cloud spring-cloud-commons diff --git a/spring-cloud-starter-zookeeper-all/pom.xml b/spring-cloud-starter-zookeeper-all/pom.xml new file mode 100644 index 00000000..9e0d5a48 --- /dev/null +++ b/spring-cloud-starter-zookeeper-all/pom.xml @@ -0,0 +1,32 @@ + + + 4.0.0 + + org.springframework.cloud + spring-cloud-zookeeper + 1.0.0.BUILD-SNAPSHOT + .. + + spring-cloud-starter-zookeeper-all + Spring Cloud Starter Zookeeper All + Spring Cloud Starter Zookeeper All + http://projects.spring.io/spring-cloud + + Pivotal Software, Inc. + http://www.spring.io + + + ${basedir}/../.. + + + + org.springframework.cloud + spring-cloud-starter-zookeeper-config + + + org.springframework.cloud + spring-cloud-starter-zookeeper-discovery + + + diff --git a/spring-cloud-starter-zookeeper-all/src/main/resources/META-INF/spring.provides b/spring-cloud-starter-zookeeper-all/src/main/resources/META-INF/spring.provides new file mode 100644 index 00000000..18c222fc --- /dev/null +++ b/spring-cloud-starter-zookeeper-all/src/main/resources/META-INF/spring.provides @@ -0,0 +1 @@ +provides: spring-cloud-consul-bus, spring-cloud-consul-config, spring-cloud-consul-discovery, spring-cloud-consul-ui \ No newline at end of file diff --git a/spring-cloud-starter-zookeeper-config/pom.xml b/spring-cloud-starter-zookeeper-config/pom.xml new file mode 100644 index 00000000..b52821f0 --- /dev/null +++ b/spring-cloud-starter-zookeeper-config/pom.xml @@ -0,0 +1,40 @@ + + + 4.0.0 + + org.springframework.cloud + spring-cloud-zookeeper + 1.0.0.BUILD-SNAPSHOT + .. + + spring-cloud-starter-zookeeper-config + Spring Cloud Starter Zookeeper Config + Spring Cloud Starter Zookeeper Config + http://projects.spring.io/spring-cloud + + Pivotal Software, Inc. + http://www.spring.io + + + ${basedir}/../.. + + + + org.springframework.cloud + spring-cloud-starter-zookeeper + + + org.springframework.cloud + spring-cloud-zookeeper-config + + + org.springframework.cloud + spring-cloud-context + + + org.apache.curator + curator-recipes + + + diff --git a/spring-cloud-starter-zookeeper-config/src/main/resources/META-INF/spring.provides b/spring-cloud-starter-zookeeper-config/src/main/resources/META-INF/spring.provides new file mode 100644 index 00000000..98fbcb5c --- /dev/null +++ b/spring-cloud-starter-zookeeper-config/src/main/resources/META-INF/spring.provides @@ -0,0 +1 @@ +provides: spring-cloud-zookeeper-config, curator-recipes \ No newline at end of file diff --git a/spring-cloud-starter-zookeeper-discovery/pom.xml b/spring-cloud-starter-zookeeper-discovery/pom.xml new file mode 100644 index 00000000..e2828cf7 --- /dev/null +++ b/spring-cloud-starter-zookeeper-discovery/pom.xml @@ -0,0 +1,75 @@ + + + 4.0.0 + + org.springframework.cloud + spring-cloud-zookeeper + 1.0.0.BUILD-SNAPSHOT + .. + + spring-cloud-starter-zookeeper-discovery + Spring Cloud Starter Zookeeper Discovery + Spring Cloud Starter Zookeeper Discovery + http://projects.spring.io/spring-cloud + + Pivotal Software, Inc. + http://www.spring.io + + + ${basedir}/../.. + + + + org.springframework.cloud + spring-cloud-starter-zookeeper + + + org.springframework.cloud + spring-cloud-zookeeper-discovery + + + org.apache.curator + curator-x-discovery + + + org.springframework.cloud + spring-cloud-netflix-core + + + com.netflix.archaius + archaius-core + + + commons-configuration + commons-configuration + + + com.netflix.ribbon + ribbon + + + com.netflix.ribbon + ribbon-core + + + com.netflix.ribbon + ribbon-httpclient + + + com.netflix.ribbon + ribbon-loadbalancer + + + org.projectlombok + lombok + + provided + + + org.springframework.boot + spring-boot-starter-web + + + diff --git a/spring-cloud-starter-zookeeper-discovery/src/main/resources/META-INF/spring.provides b/spring-cloud-starter-zookeeper-discovery/src/main/resources/META-INF/spring.provides new file mode 100644 index 00000000..fb023f06 --- /dev/null +++ b/spring-cloud-starter-zookeeper-discovery/src/main/resources/META-INF/spring.provides @@ -0,0 +1 @@ +provides: spring-cloud-zookeeper-discovery, curator-x-discovery \ No newline at end of file diff --git a/spring-cloud-starter-zookeeper/pom.xml b/spring-cloud-starter-zookeeper/pom.xml new file mode 100644 index 00000000..2433f1ee --- /dev/null +++ b/spring-cloud-starter-zookeeper/pom.xml @@ -0,0 +1,36 @@ + + + 4.0.0 + + org.springframework.cloud + spring-cloud-zookeeper + 1.0.0.BUILD-SNAPSHOT + .. + + spring-cloud-starter-zookeeper + Spring Cloud Starter Zookeeper + Spring Cloud Starter Zookeeper + http://projects.spring.io/spring-cloud + + Pivotal Software, Inc. + http://www.spring.io + + + ${basedir}/../.. + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.cloud + spring-cloud-commons + + + org.springframework.cloud + spring-cloud-zookeeper-core + + + diff --git a/spring-cloud-starter-zookeeper/src/main/resources/META-INF/spring.provides b/spring-cloud-starter-zookeeper/src/main/resources/META-INF/spring.provides new file mode 100644 index 00000000..67755fed --- /dev/null +++ b/spring-cloud-starter-zookeeper/src/main/resources/META-INF/spring.provides @@ -0,0 +1 @@ +provides: spring-cloud-zookeeper-core, curator-framework \ No newline at end of file diff --git a/spring-cloud-zookeeper-config/pom.xml b/spring-cloud-zookeeper-config/pom.xml index b8966eb6..1b5462f2 100644 --- a/spring-cloud-zookeeper-config/pom.xml +++ b/spring-cloud-zookeeper-config/pom.xml @@ -33,10 +33,17 @@ org.springframework.cloud spring-cloud-context + true + + + org.springframework.boot + spring-boot-starter-web + true org.apache.curator curator-recipes + true org.projectlombok diff --git a/spring-cloud-zookeeper-core/pom.xml b/spring-cloud-zookeeper-core/pom.xml index 0a973323..c6b34ab5 100644 --- a/spring-cloud-zookeeper-core/pom.xml +++ b/spring-cloud-zookeeper-core/pom.xml @@ -33,24 +33,28 @@ org.springframework.boot spring-boot-starter-web + true org.springframework.boot spring-boot-starter-actuator + true org.springframework.cloud spring-cloud-commons + true org.projectlombok lombok - provided + true org.apache.curator curator-framework + true org.apache.curator diff --git a/spring-cloud-zookeeper-core/src/main/java/org/springframework/cloud/zookeeper/ZookeeperAutoConfiguration.java b/spring-cloud-zookeeper-core/src/main/java/org/springframework/cloud/zookeeper/ZookeeperAutoConfiguration.java index a81368a8..0155dc69 100644 --- a/spring-cloud-zookeeper-core/src/main/java/org/springframework/cloud/zookeeper/ZookeeperAutoConfiguration.java +++ b/spring-cloud-zookeeper-core/src/main/java/org/springframework/cloud/zookeeper/ZookeeperAutoConfiguration.java @@ -4,6 +4,7 @@ import org.apache.curator.RetryPolicy; import org.apache.curator.framework.CuratorFramework; import org.apache.curator.framework.CuratorFrameworkFactory; import org.apache.curator.retry.ExponentialBackoffRetry; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; @@ -44,16 +45,18 @@ public class ZookeeperAutoConfiguration { zookeeperProperties().getMaxSleepMs()); } - @Bean - @ConditionalOnMissingBean - public ZookeeperEndpoint zookeeperEndpoint() { - return new ZookeeperEndpoint(); - } - - @Bean - @ConditionalOnMissingBean - public ZookeeperHealthIndicator zookeeperHealthIndicator() { + @Configuration + @ConditionalOnClass(name = "org.springframework.boot.actuate.endpoint.Endpoint") + protected static class ZookeeperHealthConfig { + @Bean + @ConditionalOnMissingBean + public ZookeeperEndpoint zookeeperEndpoint() { + return new ZookeeperEndpoint(); + } + @Bean + @ConditionalOnMissingBean + public ZookeeperHealthIndicator zookeeperHealthIndicator() { return new ZookeeperHealthIndicator(); } - + } } diff --git a/spring-cloud-zookeeper-discovery/pom.xml b/spring-cloud-zookeeper-discovery/pom.xml index 96a66cf2..45ae2430 100644 --- a/spring-cloud-zookeeper-discovery/pom.xml +++ b/spring-cloud-zookeeper-discovery/pom.xml @@ -37,43 +37,66 @@ org.springframework.cloud spring-cloud-zookeeper-core + + org.springframework.cloud + spring-cloud-commons + true + + + org.springframework.boot + spring-boot-starter-actuator + true + org.apache.curator curator-x-discovery + true org.springframework.cloud spring-cloud-netflix-core + true com.netflix.archaius archaius-core + true commons-configuration commons-configuration + true com.netflix.ribbon ribbon + true com.netflix.ribbon ribbon-core + true com.netflix.ribbon ribbon-loadbalancer + true com.netflix.ribbon ribbon-httpclient + true org.projectlombok lombok - provided + true + + + org.springframework.boot + spring-boot-starter-web + test org.springframework.boot diff --git a/spring-cloud-zookeeper-discovery/src/main/java/org/springframework/cloud/zookeeper/discovery/ZookeeperDiscoveryClientConfiguration.java b/spring-cloud-zookeeper-discovery/src/main/java/org/springframework/cloud/zookeeper/discovery/ZookeeperDiscoveryClientConfiguration.java index ed55abc2..c33937e4 100644 --- a/spring-cloud-zookeeper-discovery/src/main/java/org/springframework/cloud/zookeeper/discovery/ZookeeperDiscoveryClientConfiguration.java +++ b/spring-cloud-zookeeper-discovery/src/main/java/org/springframework/cloud/zookeeper/discovery/ZookeeperDiscoveryClientConfiguration.java @@ -4,6 +4,7 @@ import org.apache.curator.framework.CuratorFramework; import org.apache.curator.x.discovery.details.InstanceSerializer; import org.apache.curator.x.discovery.details.JsonInstanceSerializer; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; @@ -52,9 +53,16 @@ public class ZookeeperDiscoveryClientConfiguration { return new JsonInstanceSerializer<>(ZookeeperInstance.class); } - @Bean - public ZookeeperDiscoveryHealthIndicator zookeeperDiscoveryHealthIndicator() { - return new ZookeeperDiscoveryHealthIndicator(zookeeperServiceDiscovery()); + @Configuration + @ConditionalOnClass(name = "org.springframework.boot.actuate.endpoint.Endpoint") + protected static class ZookeeperDiscoveryHealthConfig { + @Autowired + private ZookeeperServiceDiscovery serviceDiscovery; + + @Bean + public ZookeeperDiscoveryHealthIndicator zookeeperDiscoveryHealthIndicator() { + return new ZookeeperDiscoveryHealthIndicator(serviceDiscovery); + } } @Bean diff --git a/spring-cloud-zookeeper-sample/pom.xml b/spring-cloud-zookeeper-sample/pom.xml index cf774aca..0d710c7a 100644 --- a/spring-cloud-zookeeper-sample/pom.xml +++ b/spring-cloud-zookeeper-sample/pom.xml @@ -32,21 +32,19 @@ + + org.springframework.cloud + spring-cloud-starter-zookeeper-all + + org.springframework.boot - spring-boot-starter-web - - - org.springframework.cloud - spring-cloud-zookeeper-config - - - org.springframework.cloud - spring-cloud-zookeeper-discovery + spring-boot-starter-actuator org.projectlombok lombok + true