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