diff --git a/spring-cloud-context/src/main/java/org/springframework/cloud/context/refresh/ConfigDataContextRefresher.java b/spring-cloud-context/src/main/java/org/springframework/cloud/context/refresh/ConfigDataContextRefresher.java index fd92904b6..5b8bcea64 100644 --- a/spring-cloud-context/src/main/java/org/springframework/cloud/context/refresh/ConfigDataContextRefresher.java +++ b/spring-cloud-context/src/main/java/org/springframework/cloud/context/refresh/ConfigDataContextRefresher.java @@ -24,12 +24,10 @@ import org.springframework.boot.EnvironmentPostProcessor; import org.springframework.boot.SpringApplication; -import org.springframework.boot.bootstrap.BootstrapContext; -import org.springframework.boot.bootstrap.BootstrapRegistry; import org.springframework.boot.bootstrap.ConfigurableBootstrapContext; import org.springframework.boot.bootstrap.DefaultBootstrapContext; import org.springframework.boot.logging.DeferredLogFactory; -import org.springframework.boot.util.Instantiator; +import org.springframework.boot.support.EnvironmentPostProcessorsFactory; import org.springframework.cloud.autoconfigure.RefreshAutoConfiguration; import org.springframework.cloud.context.config.ContextRefreshedWithApplicationEvent; import org.springframework.cloud.context.scope.refresh.RefreshScope; @@ -38,11 +36,11 @@ import org.springframework.core.env.MutablePropertySources; import org.springframework.core.env.PropertySource; import org.springframework.core.env.StandardEnvironment; -import org.springframework.core.io.support.SpringFactoriesLoader; /** * @author Dave Syer * @author Venil Noronha + * @author Yanming Zhou */ public class ConfigDataContextRefresher extends ContextRefresher implements ApplicationListener { @@ -77,17 +75,10 @@ protected void updateEnvironment() { // decrypt happen after refresh. The hard coded call to // ConfigDataEnvironmentPostProcessor.applyTo() is now automated as well. DeferredLogFactory logFactory = new PassthruDeferredLogFactory(); - List classNames = SpringFactoriesLoader.loadFactoryNames(EnvironmentPostProcessor.class, - getClass().getClassLoader()); - Instantiator instantiator = new Instantiator<>(EnvironmentPostProcessor.class, - (parameters) -> { - parameters.add(DeferredLogFactory.class, logFactory); - parameters.add(Log.class, logFactory::getLog); - parameters.add(ConfigurableBootstrapContext.class, bootstrapContext); - parameters.add(BootstrapContext.class, bootstrapContext); - parameters.add(BootstrapRegistry.class, bootstrapContext); - }); - List postProcessors = instantiator.instantiate(classNames); + EnvironmentPostProcessorsFactory postProcessorsFactory = EnvironmentPostProcessorsFactory + .fromSpringFactories(getClass().getClassLoader()); + List postProcessors = postProcessorsFactory.getEnvironmentPostProcessors(logFactory, + bootstrapContext); for (EnvironmentPostProcessor postProcessor : postProcessors) { postProcessor.postProcessEnvironment(environment, application); }