Browse Source

Lazy load ConfigUtil

prevent ConfigUtil init when ApolloApplicationContextInitializer initialized,
That is too early.

This issue caused by commit 6d50ca881a6afb2766725bdb3c09c14d450cc12f
Lonre Wang 3 years ago
parent
commit
bfdfd985fb

+ 1 - 0
CHANGES.md

@@ -66,6 +66,7 @@ Apollo 1.9.0
 * [translation of "portal-how-to-enable-webhook-notification.md"](https://github.com/ctripcorp/apollo/pull/3847)
 * [feature: add history detail for not key-value type of namespace](https://github.com/ctripcorp/apollo/pull/3856)
 * [fix show-text-modal number display](https://github.com/ctripcorp/apollo/pull/3851)
+* [Lazy load ConfigUtil](https://github.com/ctripcorp/apollo/pull/3864)
 
 ------------------
 All issues and pull requests are [here](https://github.com/ctripcorp/apollo/milestone/6?closed=1)

+ 1 - 2
apollo-client/src/main/java/com/ctrip/framework/apollo/spring/boot/ApolloApplicationContextInitializer.java

@@ -94,8 +94,6 @@ public class ApolloApplicationContextInitializer implements
   private final ConfigPropertySourceFactory configPropertySourceFactory = SpringInjector
       .getInstance(ConfigPropertySourceFactory.class);
 
-  private final ConfigUtil configUtil = ApolloInjector.getInstance(ConfigUtil.class);
-
   private int order = DEFAULT_ORDER;
 
   @Override
@@ -130,6 +128,7 @@ public class ApolloApplicationContextInitializer implements
     List<String> namespaceList = NAMESPACE_SPLITTER.splitToList(namespaces);
 
     CompositePropertySource composite;
+    final ConfigUtil configUtil = ApolloInjector.getInstance(ConfigUtil.class);
     if (configUtil.isPropertyNamesCacheEnabled()) {
       composite = new CachedCompositePropertySource(PropertySourcesConstants.APOLLO_BOOTSTRAP_PROPERTY_SOURCE_NAME);
     } else {

+ 2 - 1
apollo-client/src/main/java/com/ctrip/framework/apollo/spring/config/PropertySourcesProcessor.java

@@ -62,7 +62,7 @@ public class PropertySourcesProcessor implements BeanFactoryPostProcessor, Envir
 
   private final ConfigPropertySourceFactory configPropertySourceFactory = SpringInjector
       .getInstance(ConfigPropertySourceFactory.class);
-  private final ConfigUtil configUtil = ApolloInjector.getInstance(ConfigUtil.class);
+  private ConfigUtil configUtil;
   private ConfigurableEnvironment environment;
 
   public static boolean addNamespaces(Collection<String> namespaces, int order) {
@@ -71,6 +71,7 @@ public class PropertySourcesProcessor implements BeanFactoryPostProcessor, Envir
 
   @Override
   public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
+    this.configUtil = ApolloInjector.getInstance(ConfigUtil.class);
     initializePropertySources();
     initializeAutoUpdatePropertiesFeature(beanFactory);
   }