diff --git a/docs/pom.xml b/docs/pom.xml
index edfba75c..d1eb9961 100644
--- a/docs/pom.xml
+++ b/docs/pom.xml
@@ -8,7 +8,7 @@
org.springframework.cloud
spring-cloud-commons-parent
- 2.0.2.BUILD-SNAPSHOT
+ 2.1.0.BUILD-SNAPSHOT
pom
Spring Cloud Commons Docs
@@ -16,7 +16,7 @@
spring-cloud-commons
${basedir}/..
- 1.1.x,1.2.x,1.3.x
+ 1.2.x,1.3.x,2.0.x
diff --git a/pom.xml b/pom.xml
index 5e39cc04..9dfbf2c7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
org.springframework.cloud
spring-cloud-commons-parent
- 2.0.2.BUILD-SNAPSHOT
+ 2.1.0.BUILD-SNAPSHOT
pom
Spring Cloud Commons Parent
Spring Cloud Commons Parent
@@ -11,7 +11,7 @@
org.springframework.cloud
spring-cloud-build
- 2.0.3.RELEASE
+ 2.1.0.BUILD-SNAPSHOT
diff --git a/spring-cloud-commons-dependencies/pom.xml b/spring-cloud-commons-dependencies/pom.xml
index ea634b9d..c7e8642c 100644
--- a/spring-cloud-commons-dependencies/pom.xml
+++ b/spring-cloud-commons-dependencies/pom.xml
@@ -5,11 +5,11 @@
spring-cloud-dependencies-parent
org.springframework.cloud
- 2.0.3.RELEASE
+ 2.1.0.BUILD-SNAPSHOT
spring-cloud-commons-dependencies
- 2.0.2.BUILD-SNAPSHOT
+ 2.1.0.BUILD-SNAPSHOT
pom
spring-cloud-commons-dependencies
Spring Cloud Commons Dependencies
diff --git a/spring-cloud-commons/pom.xml b/spring-cloud-commons/pom.xml
index a4c7a419..2a7cc349 100644
--- a/spring-cloud-commons/pom.xml
+++ b/spring-cloud-commons/pom.xml
@@ -6,7 +6,7 @@
org.springframework.cloud
spring-cloud-commons-parent
- 2.0.2.BUILD-SNAPSHOT
+ 2.1.0.BUILD-SNAPSHOT
..
spring-cloud-commons
diff --git a/spring-cloud-commons/src/test/java/org/springframework/cloud/client/CommonsClientAutoConfigurationTests.java b/spring-cloud-commons/src/test/java/org/springframework/cloud/client/CommonsClientAutoConfigurationTests.java
index c11877f7..c390a3c2 100644
--- a/spring-cloud-commons/src/test/java/org/springframework/cloud/client/CommonsClientAutoConfigurationTests.java
+++ b/spring-cloud-commons/src/test/java/org/springframework/cloud/client/CommonsClientAutoConfigurationTests.java
@@ -2,6 +2,7 @@ package org.springframework.cloud.client;
import org.junit.Test;
import org.springframework.beans.BeansException;
+import org.springframework.boot.WebApplicationType;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.actuator.FeaturesEndpoint;
@@ -81,7 +82,7 @@ public class CommonsClientAutoConfigurationTests {
}
protected ConfigurableApplicationContext init(String... pairs) {
- return new SpringApplicationBuilder().web(false).sources(Config.class)
+ return new SpringApplicationBuilder().web(WebApplicationType.NONE).sources(Config.class)
.properties(pairs).run();
}
diff --git a/spring-cloud-commons/src/test/java/org/springframework/cloud/client/discovery/EnableDiscoveryClientMissingImplTests.java b/spring-cloud-commons/src/test/java/org/springframework/cloud/client/discovery/EnableDiscoveryClientMissingImplTests.java
index b1a0c461..7bfb1796 100644
--- a/spring-cloud-commons/src/test/java/org/springframework/cloud/client/discovery/EnableDiscoveryClientMissingImplTests.java
+++ b/spring-cloud-commons/src/test/java/org/springframework/cloud/client/discovery/EnableDiscoveryClientMissingImplTests.java
@@ -1,6 +1,7 @@
package org.springframework.cloud.client.discovery;
import org.junit.Test;
+import org.springframework.boot.WebApplicationType;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.context.ConfigurableApplicationContext;
@@ -19,7 +20,7 @@ public class EnableDiscoveryClientMissingImplTests {
@Test
public void testContextFails() {
try (ConfigurableApplicationContext context = new SpringApplicationBuilder()
- .sources(App.class).web(false).run(new String[0]);) {
+ .sources(App.class).web(WebApplicationType.NONE).run(new String[0]);) {
}
catch (NestedRuntimeException e) {
Throwable rootCause = e.getRootCause();
diff --git a/spring-cloud-commons/src/test/java/org/springframework/cloud/client/loadbalancer/AbstractLoadBalancerAutoConfigurationTests.java b/spring-cloud-commons/src/test/java/org/springframework/cloud/client/loadbalancer/AbstractLoadBalancerAutoConfigurationTests.java
index dad62f0b..8df8ccc8 100644
--- a/spring-cloud-commons/src/test/java/org/springframework/cloud/client/loadbalancer/AbstractLoadBalancerAutoConfigurationTests.java
+++ b/spring-cloud-commons/src/test/java/org/springframework/cloud/client/loadbalancer/AbstractLoadBalancerAutoConfigurationTests.java
@@ -31,6 +31,7 @@ import java.util.Random;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.WebApplicationType;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.DefaultServiceInstance;
import org.springframework.cloud.client.ServiceInstance;
@@ -81,7 +82,7 @@ public abstract class AbstractLoadBalancerAutoConfigurationTests {
}
protected ConfigurableApplicationContext init(Class> config) {
- return new SpringApplicationBuilder().web(false)
+ return new SpringApplicationBuilder().web(WebApplicationType.NONE)
.properties("spring.aop.proxyTargetClass=true")
.sources(config, LoadBalancerAutoConfiguration.class).run();
}
diff --git a/spring-cloud-commons/src/test/java/org/springframework/cloud/client/loadbalancer/AsyncLoadBalancerAutoConfigurationTests.java b/spring-cloud-commons/src/test/java/org/springframework/cloud/client/loadbalancer/AsyncLoadBalancerAutoConfigurationTests.java
index 84d0903e..41d4f5f9 100644
--- a/spring-cloud-commons/src/test/java/org/springframework/cloud/client/loadbalancer/AsyncLoadBalancerAutoConfigurationTests.java
+++ b/spring-cloud-commons/src/test/java/org/springframework/cloud/client/loadbalancer/AsyncLoadBalancerAutoConfigurationTests.java
@@ -19,6 +19,7 @@ package org.springframework.cloud.client.loadbalancer;
import org.hamcrest.MatcherAssert;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.WebApplicationType;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.DefaultServiceInstance;
import org.springframework.cloud.client.ServiceInstance;
@@ -89,7 +90,7 @@ public class AsyncLoadBalancerAutoConfigurationTests {
}
protected ConfigurableApplicationContext init(Class> config) {
- return new SpringApplicationBuilder().web(false)
+ return new SpringApplicationBuilder().web(WebApplicationType.NONE)
.properties("spring.aop.proxyTargetClass=true")
.sources(config, AsyncLoadBalancerAutoConfiguration.class).run();
}
diff --git a/spring-cloud-commons/src/test/java/org/springframework/cloud/client/loadbalancer/LoadBalancerRequestFactoryConfigurationTests.java b/spring-cloud-commons/src/test/java/org/springframework/cloud/client/loadbalancer/LoadBalancerRequestFactoryConfigurationTests.java
index 4cdbc0a5..c89a3e14 100644
--- a/spring-cloud-commons/src/test/java/org/springframework/cloud/client/loadbalancer/LoadBalancerRequestFactoryConfigurationTests.java
+++ b/spring-cloud-commons/src/test/java/org/springframework/cloud/client/loadbalancer/LoadBalancerRequestFactoryConfigurationTests.java
@@ -28,6 +28,7 @@ import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
+import org.springframework.boot.WebApplicationType;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.context.ConfigurableApplicationContext;
@@ -62,7 +63,7 @@ public class LoadBalancerRequestFactoryConfigurationTests {
}
protected ConfigurableApplicationContext init(Class> config) {
- ConfigurableApplicationContext context = new SpringApplicationBuilder().web(false)
+ ConfigurableApplicationContext context = new SpringApplicationBuilder().web(WebApplicationType.NONE)
.properties("spring.aop.proxyTargetClass=true")
.sources(config, LoadBalancerAutoConfiguration.class).run();
diff --git a/spring-cloud-commons/src/test/java/org/springframework/cloud/client/serviceregistry/AutoServiceRegistrationAutoConfigurationTests.java b/spring-cloud-commons/src/test/java/org/springframework/cloud/client/serviceregistry/AutoServiceRegistrationAutoConfigurationTests.java
index 39e82067..a1126619 100644
--- a/spring-cloud-commons/src/test/java/org/springframework/cloud/client/serviceregistry/AutoServiceRegistrationAutoConfigurationTests.java
+++ b/spring-cloud-commons/src/test/java/org/springframework/cloud/client/serviceregistry/AutoServiceRegistrationAutoConfigurationTests.java
@@ -8,8 +8,9 @@ import org.hamcrest.Matchers;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
+
import org.springframework.beans.factory.BeanCreationException;
-import org.springframework.boot.test.util.EnvironmentTestUtils;
+import org.springframework.boot.test.util.TestPropertyValues;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -74,7 +75,7 @@ public class AutoServiceRegistrationAutoConfigurationTests {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.register(list.toArray(new Class[0]));
if (StringUtils.hasText(property)) {
- EnvironmentTestUtils.addEnvironment(context, property);
+ TestPropertyValues.of(property).applyTo(context);
}
context.refresh();
return context;
diff --git a/spring-cloud-context-integration-tests/pom.xml b/spring-cloud-context-integration-tests/pom.xml
index 58fee792..30644d60 100644
--- a/spring-cloud-context-integration-tests/pom.xml
+++ b/spring-cloud-context-integration-tests/pom.xml
@@ -6,7 +6,7 @@
org.springframework.cloud
spring-cloud-commons-parent
- 2.0.2.BUILD-SNAPSHOT
+ 2.1.0.BUILD-SNAPSHOT
..
spring-cloud-context-integration-tests
diff --git a/spring-cloud-context-integration-tests/src/test/java/org/springframework/cloud/autoconfigure/RefreshScopeIntegrationTests.java b/spring-cloud-context-integration-tests/src/test/java/org/springframework/cloud/autoconfigure/RefreshScopeIntegrationTests.java
index 7cc93062..47c6b6c6 100644
--- a/spring-cloud-context-integration-tests/src/test/java/org/springframework/cloud/autoconfigure/RefreshScopeIntegrationTests.java
+++ b/spring-cloud-context-integration-tests/src/test/java/org/springframework/cloud/autoconfigure/RefreshScopeIntegrationTests.java
@@ -49,6 +49,7 @@ import static org.junit.Assert.assertTrue;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = TestConfiguration.class)
+@SuppressWarnings("Duplicates")
public class RefreshScopeIntegrationTests {
@Autowired
diff --git a/spring-cloud-context/pom.xml b/spring-cloud-context/pom.xml
index 3684942b..3b52b3bb 100644
--- a/spring-cloud-context/pom.xml
+++ b/spring-cloud-context/pom.xml
@@ -6,7 +6,7 @@
org.springframework.cloud
spring-cloud-commons-parent
- 2.0.2.BUILD-SNAPSHOT
+ 2.1.0.BUILD-SNAPSHOT
..
spring-cloud-context
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 c6e41a6f..78518ef2 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
@@ -23,13 +23,14 @@ import java.util.Set;
import javax.annotation.PostConstruct;
-import org.springframework.aop.scope.ScopedProxyUtils;
+import org.springframework.aop.framework.ProxyFactory;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.ListableBeanFactory;
+import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanDefinition;
-import org.springframework.beans.factory.config.BeanDefinitionHolder;
+import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;
@@ -62,10 +63,14 @@ import org.springframework.stereotype.Component;
*/
@Configuration
@ConditionalOnClass(RefreshScope.class)
-@ConditionalOnProperty(name = "spring.cloud.refresh.enabled", matchIfMissing = true)
+@ConditionalOnProperty(name = RefreshAutoConfiguration.REFRESH_SCOPE_ENABLED, matchIfMissing = true)
@AutoConfigureBefore(HibernateJpaAutoConfiguration.class)
public class RefreshAutoConfiguration {
+ public static final String REFRESH_SCOPE_NAME = "refresh";
+ public static final String REFRESH_SCOPE_PREFIX = "spring.cloud.refresh";
+ public static final String REFRESH_SCOPE_ENABLED = REFRESH_SCOPE_PREFIX + ".enabled";
+
@Bean
@ConditionalOnMissingBean(RefreshScope.class)
public static RefreshScope refreshScope() {
@@ -95,7 +100,9 @@ public class RefreshAutoConfiguration {
@Component
protected static class RefreshScopeBeanDefinitionEnhancer
- implements BeanDefinitionRegistryPostProcessor {
+ implements BeanPostProcessor, BeanDefinitionRegistryPostProcessor {
+
+ private BeanDefinitionRegistry registry;
/**
* Class names for beans to post process into refresh scope. Useful when you don't
@@ -104,8 +111,6 @@ public class RefreshAutoConfiguration {
private Set refreshables = new HashSet<>(
Arrays.asList("com.zaxxer.hikari.HikariDataSource"));
- private Environment environment;
-
public Set getRefreshable() {
return this.refreshables;
}
@@ -124,29 +129,42 @@ public class RefreshAutoConfiguration {
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
throws BeansException {
+ Environment environment = beanFactory.getBean(Environment.class);
+ if (environment == null) {
+ environment = new StandardEnvironment();
+ }
+ Binder.get(environment).bind(REFRESH_SCOPE_PREFIX, Bindable.ofInstance(this));
}
@Override
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry)
throws BeansException {
- for (String name : registry.getBeanDefinitionNames()) {
- BeanDefinition definition = registry.getBeanDefinition(name);
- if (isApplicable(registry, name, definition)) {
- BeanDefinitionHolder holder = new BeanDefinitionHolder(definition,
- name);
- BeanDefinitionHolder proxy = ScopedProxyUtils
- .createScopedProxy(holder, registry, true);
- definition.setScope("refresh");
- registry.registerBeanDefinition(proxy.getBeanName(),
- proxy.getBeanDefinition());
- }
+ this.registry = registry;
+ }
+
+ @Override
+ public Object postProcessAfterInitialization(Object bean, String beanName)
+ throws BeansException {
+ BeanDefinition definition = null;
+ try {
+ definition = registry.getBeanDefinition(beanName);
}
+ catch (NoSuchBeanDefinitionException e) {
+ // just ignore and move on
+ return bean;
+ }
+ if (isApplicable(registry, beanName, definition)) {
+ definition.setScope(REFRESH_SCOPE_NAME);
+ ProxyFactory proxyFactory = new ProxyFactory(bean);
+ return proxyFactory.getProxy();
+ }
+ return bean;
}
private boolean isApplicable(BeanDefinitionRegistry registry, String name,
BeanDefinition definition) {
String scope = definition.getScope();
- if ("refresh".equals(scope)) {
+ if (REFRESH_SCOPE_NAME.equals(scope)) {
// Already refresh scoped
return false;
}
@@ -158,15 +176,6 @@ public class RefreshAutoConfiguration {
}
}
if (type != null) {
- if (this.environment == null && registry instanceof BeanFactory) {
- this.environment = ((BeanFactory) registry)
- .getBean(Environment.class);
- }
- if (this.environment == null) {
- this.environment = new StandardEnvironment();
- }
- Binder.get(environment).bind("spring.cloud.refresh",
- Bindable.ofInstance(this));
return this.refreshables.contains(type);
}
return false;
diff --git a/spring-cloud-context/src/test/java/org/springframework/cloud/autoconfigure/RefreshAutoConfigurationTests.java b/spring-cloud-context/src/test/java/org/springframework/cloud/autoconfigure/RefreshAutoConfigurationTests.java
index 7512f2ef..2ec3f28d 100644
--- a/spring-cloud-context/src/test/java/org/springframework/cloud/autoconfigure/RefreshAutoConfigurationTests.java
+++ b/spring-cloud-context/src/test/java/org/springframework/cloud/autoconfigure/RefreshAutoConfigurationTests.java
@@ -69,7 +69,7 @@ public class RefreshAutoConfigurationTests {
@Configuration
@EnableAutoConfiguration(exclude = DataSourceAutoConfiguration.class)
- @EnableConfigurationProperties(ConfigProps.class)
+ @EnableConfigurationProperties
static class Config {
}
diff --git a/spring-cloud-context/src/test/java/org/springframework/cloud/context/refresh/ContextRefresherTests.java b/spring-cloud-context/src/test/java/org/springframework/cloud/context/refresh/ContextRefresherTests.java
index e4b7cc9c..d7591d0f 100644
--- a/spring-cloud-context/src/test/java/org/springframework/cloud/context/refresh/ContextRefresherTests.java
+++ b/spring-cloud-context/src/test/java/org/springframework/cloud/context/refresh/ContextRefresherTests.java
@@ -38,7 +38,7 @@ public class ContextRefresherTests {
@Test
public void orderNewPropertiesConsistentWithNewContext() {
try (ConfigurableApplicationContext context = SpringApplication.run(Empty.class,
- "--spring.main.webEnvironment=false", "--debug=false",
+ "--spring.main.web-application-type=none", "--debug=false",
"--spring.main.bannerMode=OFF")) {
context.getEnvironment().setActiveProfiles("refresh");
List names = names(context.getEnvironment().getPropertySources());
@@ -61,7 +61,7 @@ public class ContextRefresherTests {
// Use spring.cloud.bootstrap.name to switch off the defaults (which would pick up
// a bootstrapProperties immediately
try (ConfigurableApplicationContext context = SpringApplication.run(Empty.class,
- "--spring.main.webEnvironment=false", "--debug=false",
+ "--spring.main.web-application-type=none", "--debug=false",
"--spring.main.bannerMode=OFF",
"--spring.cloud.bootstrap.name=refresh")) {
List names = names(context.getEnvironment().getPropertySources());
@@ -82,7 +82,7 @@ public class ContextRefresherTests {
// Use spring.cloud.bootstrap.name to switch off the defaults (which would pick up
// a bootstrapProperties immediately
try (ConfigurableApplicationContext context = SpringApplication.run(
- ContextRefresherTests.class, "--spring.main.webEnvironment=false",
+ ContextRefresherTests.class, "--spring.main.web-application-type=none",
"--debug=false", "--spring.main.bannerMode=OFF",
"--spring.cloud.bootstrap.name=refresh")) {
ContextRefresher refresher = new ContextRefresher(context, scope);
@@ -107,7 +107,7 @@ public class ContextRefresherTests {
.get(getClass().getClassLoader());
assertThat(system.getCount()).isEqualTo(0);
try (ConfigurableApplicationContext context = SpringApplication.run(Empty.class,
- "--spring.main.webEnvironment=false", "--debug=false",
+ "--spring.main.web-application-type=none", "--debug=false",
"--spring.main.bannerMode=OFF",
"--spring.cloud.bootstrap.name=refresh")) {
assertThat(system.getCount()).isEqualTo(4);
@@ -123,7 +123,7 @@ public class ContextRefresherTests {
TestBootstrapConfiguration.fooSightings = new ArrayList<>();
try (ConfigurableApplicationContext context = SpringApplication.run(ContextRefresherTests.class,
- "--spring.main.webEnvironment=false", "--debug=false",
+ "--spring.main.web-application-type=none", "--debug=false",
"--spring.main.bannerMode=OFF",
"--spring.cloud.bootstrap.name=refresh",
"--test.bootstrap.foo=bar")) {
diff --git a/spring-cloud-starter/pom.xml b/spring-cloud-starter/pom.xml
index c153f105..f1ef0553 100644
--- a/spring-cloud-starter/pom.xml
+++ b/spring-cloud-starter/pom.xml
@@ -5,7 +5,7 @@
org.springframework.cloud
spring-cloud-commons-parent
- 2.0.2.BUILD-SNAPSHOT
+ 2.1.0.BUILD-SNAPSHOT
spring-cloud-starter
spring-cloud-starter
diff --git a/spring-cloud-test-support/pom.xml b/spring-cloud-test-support/pom.xml
index ddf021d1..28826c2f 100644
--- a/spring-cloud-test-support/pom.xml
+++ b/spring-cloud-test-support/pom.xml
@@ -6,7 +6,7 @@
org.springframework.cloud
spring-cloud-commons-parent
- 2.0.2.BUILD-SNAPSHOT
+ 2.1.0.BUILD-SNAPSHOT
..
spring-cloud-test-support