diff --git a/spring-cloud-context/pom.xml b/spring-cloud-context/pom.xml
index f668bfb2..99fe3d84 100644
--- a/spring-cloud-context/pom.xml
+++ b/spring-cloud-context/pom.xml
@@ -59,5 +59,11 @@
spring-boot-starter-test
test
+
+ org.springframework.cloud
+ spring-cloud-commons
+ ${project.version}
+ test-jar
+
diff --git a/spring-cloud-context/src/main/java/org/springframework/cloud/autoconfigure/RefreshAutoConfiguration.java b/spring-cloud-context/src/main/java/org/springframework/cloud/autoconfigure/RefreshAutoConfiguration.java
index 6ee17ede..339569b5 100644
--- a/spring-cloud-context/src/main/java/org/springframework/cloud/autoconfigure/RefreshAutoConfiguration.java
+++ b/spring-cloud-context/src/main/java/org/springframework/cloud/autoconfigure/RefreshAutoConfiguration.java
@@ -30,6 +30,7 @@ import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration;
import org.springframework.cloud.context.environment.EnvironmentManager;
import org.springframework.cloud.context.refresh.ContextRefresher;
import org.springframework.cloud.context.scope.refresh.RefreshScope;
+import org.springframework.cloud.endpoint.event.RefreshEventListener;
import org.springframework.cloud.logging.LoggingRebinder;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Bean;
@@ -88,4 +89,10 @@ public class RefreshAutoConfiguration {
return new ContextRefresher(context, scope);
}
+ @Bean
+ public RefreshEventListener refreshEventListener(
+ ContextRefresher contextRefresher) {
+ return new RefreshEventListener(contextRefresher);
+ }
+
}
diff --git a/spring-cloud-context/src/main/java/org/springframework/cloud/autoconfigure/RefreshEndpointAutoConfiguration.java b/spring-cloud-context/src/main/java/org/springframework/cloud/autoconfigure/RefreshEndpointAutoConfiguration.java
index 32c58d29..38fb06ce 100644
--- a/spring-cloud-context/src/main/java/org/springframework/cloud/autoconfigure/RefreshEndpointAutoConfiguration.java
+++ b/spring-cloud-context/src/main/java/org/springframework/cloud/autoconfigure/RefreshEndpointAutoConfiguration.java
@@ -16,16 +16,10 @@
package org.springframework.cloud.autoconfigure;
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.boot.actuate.autoconfigure.ConditionalOnEnabledHealthIndicator;
import org.springframework.boot.actuate.autoconfigure.EndpointAutoConfiguration;
import org.springframework.boot.actuate.endpoint.Endpoint;
-import org.springframework.boot.actuate.endpoint.InfoEndpoint;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
@@ -34,18 +28,14 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClas
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.bootstrap.config.PropertySourceBootstrapConfiguration;
-import org.springframework.cloud.context.environment.EnvironmentChangeEvent;
import org.springframework.cloud.context.properties.ConfigurationPropertiesRebinder;
import org.springframework.cloud.context.refresh.ContextRefresher;
import org.springframework.cloud.context.restart.RestartEndpoint;
import org.springframework.cloud.context.scope.refresh.RefreshScope;
import org.springframework.cloud.endpoint.RefreshEndpoint;
-import org.springframework.cloud.endpoint.event.RefreshEventListener;
import org.springframework.cloud.health.RefreshScopeHealthIndicator;
-import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.integration.monitor.IntegrationMBeanExporter;
/**
@@ -119,11 +109,5 @@ public class RefreshEndpointAutoConfiguration {
return endpoint;
}
- @Bean
- public RefreshEventListener refreshEventListener(
- RefreshEndpoint refreshEndpoint) {
- return new RefreshEventListener(refreshEndpoint);
- }
-
}
}
\ No newline at end of file
diff --git a/spring-cloud-context/src/main/java/org/springframework/cloud/endpoint/event/RefreshEventListener.java b/spring-cloud-context/src/main/java/org/springframework/cloud/endpoint/event/RefreshEventListener.java
index 4cda9706..16cf5e7f 100644
--- a/spring-cloud-context/src/main/java/org/springframework/cloud/endpoint/event/RefreshEventListener.java
+++ b/spring-cloud-context/src/main/java/org/springframework/cloud/endpoint/event/RefreshEventListener.java
@@ -1,25 +1,25 @@
package org.springframework.cloud.endpoint.event;
-import java.util.Arrays;
+import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
import org.springframework.boot.context.event.ApplicationReadyEvent;
-import org.springframework.cloud.endpoint.RefreshEndpoint;
+import org.springframework.cloud.context.refresh.ContextRefresher;
import org.springframework.context.event.EventListener;
import lombok.extern.apachecommons.CommonsLog;
/**
- * Calls {@link RefreshEndpoint#refresh()} when a {@link RefreshEvent} is received.
+ * Calls {@link RefreshEventListener#refresh} when a {@link RefreshEvent} is received.
* Only responds to {@link RefreshEvent} after receiving an {@link ApplicationReadyEvent} as the RefreshEvent's might come to early in the application lifecycle.
* @author Spencer Gibb
*/
@CommonsLog
public class RefreshEventListener {
- private RefreshEndpoint refresh;
+ private ContextRefresher refresh;
private AtomicBoolean ready = new AtomicBoolean(false);
- public RefreshEventListener(RefreshEndpoint refresh) {
+ public RefreshEventListener(ContextRefresher refresh) {
this.refresh = refresh;
}
@@ -32,8 +32,8 @@ public class RefreshEventListener {
public void handle(RefreshEvent event) {
if (this.ready.get()) { // don't handle events before app is ready
log.debug("Event received " + event.getEventDesc());
- String[] keys = this.refresh.refresh();
- log.info("Refresh keys changed: " + Arrays.asList(keys));
+ Set keys = this.refresh.refresh();
+ log.info("Refresh keys changed: " + keys);
}
}
}
diff --git a/spring-cloud-context/src/test/java/org/springframework/cloud/autoconfigure/RefreshAutoConfigurationClassPathTests.java b/spring-cloud-context/src/test/java/org/springframework/cloud/autoconfigure/RefreshAutoConfigurationClassPathTests.java
new file mode 100644
index 00000000..a6b190cb
--- /dev/null
+++ b/spring-cloud-context/src/test/java/org/springframework/cloud/autoconfigure/RefreshAutoConfigurationClassPathTests.java
@@ -0,0 +1,42 @@
+package org.springframework.cloud.autoconfigure;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.cloud.ClassPathExclusions;
+import org.springframework.cloud.FilteredClassPathRunner;
+import org.springframework.cloud.endpoint.event.RefreshEventListener;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.context.annotation.Configuration;
+
+import static org.junit.Assert.assertFalse;
+
+/**
+ * @author Spencer Gibb
+ */
+@RunWith(FilteredClassPathRunner.class)
+@ClassPathExclusions({"spring-boot-actuator-*.jar", "spring-boot-starter-actuator-*.jar"})
+public class RefreshAutoConfigurationClassPathTests {
+
+ @Test
+ public void refreshEventListenerCreated() {
+ try (ConfigurableApplicationContext context = getApplicationContext(
+ Config.class)) {
+ assertFalse(context.getBeansOfType(RefreshEventListener.class).isEmpty());
+ assertFalse(context.containsBean("refeshEndpoint"));
+ }
+ }
+
+ private static ConfigurableApplicationContext getApplicationContext(
+ Class> configuration, String... properties) {
+ return new SpringApplicationBuilder(configuration).web(false)
+ .properties(properties).run();
+ }
+
+ @Configuration
+ @EnableAutoConfiguration
+ static class Config {
+
+ }
+}