diff --git a/spring-cloud-context/src/main/java/org/springframework/cloud/context/scope/refresh/RefreshScope.java b/spring-cloud-context/src/main/java/org/springframework/cloud/context/scope/refresh/RefreshScope.java index 1d421ae5..a858dcf9 100644 --- a/spring-cloud-context/src/main/java/org/springframework/cloud/context/scope/refresh/RefreshScope.java +++ b/spring-cloud-context/src/main/java/org/springframework/cloud/context/scope/refresh/RefreshScope.java @@ -14,6 +14,7 @@ package org.springframework.cloud.context.scope.refresh; import java.io.Serializable; +import java.lang.reflect.Field; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanDefinition; @@ -26,8 +27,10 @@ import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.context.event.EventListener; import org.springframework.core.Ordered; import org.springframework.core.env.ConfigurableEnvironment; +import org.springframework.core.env.MutablePropertySources; import org.springframework.jmx.export.annotation.ManagedOperation; import org.springframework.jmx.export.annotation.ManagedResource; +import org.springframework.util.ReflectionUtils; /** *
@@ -150,8 +153,11 @@ public class RefreshScope extends GenericScope try { ConfigurationPropertiesBindingPostProcessor processor = context .getBean(ConfigurationPropertiesBindingPostProcessor.class); - processor.setPropertySources(((ConfigurableEnvironment) this.context.getEnvironment()).getPropertySources()); - processor.destroy(); + //TODO: replace reflection with agreed upon contract + Field field = ReflectionUtils.findField(ConfigurationPropertiesBindingPostProcessor.class, "propertySources"); + ReflectionUtils.makeAccessible(field); + MutablePropertySources propertySources = ((ConfigurableEnvironment) this.context.getEnvironment()).getPropertySources(); + ReflectionUtils.setField(field, processor, propertySources); processor.afterPropertiesSet(); } catch (Exception e) {