diff --git a/CHANGES.md b/CHANGES.md index 9c920f93db0..8591e044a15 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -40,6 +40,7 @@ Apollo 2.0.0 * [Make password check not hardcoded](https://github.com/apolloconfig/apollo/pull/4207) * [Fix update user's password failure](https://github.com/apolloconfig/apollo/pull/4212) * [Fix bug: associated namespace display incorrect in text view](https://github.com/apolloconfig/apollo/pull/4219) +* [Add Ordered interface to ProviderManager SPI](https://github.com/apolloconfig/apollo/pull/4218) ------------------ All issues and pull requests are [here](https://github.com/ctripcorp/apollo/milestone/8?closed=1) diff --git a/apollo-core/src/main/java/com/ctrip/framework/foundation/Foundation.java b/apollo-core/src/main/java/com/ctrip/framework/foundation/Foundation.java index 17f2aa9fe80..7bd1f150500 100644 --- a/apollo-core/src/main/java/com/ctrip/framework/foundation/Foundation.java +++ b/apollo-core/src/main/java/com/ctrip/framework/foundation/Foundation.java @@ -26,8 +26,9 @@ import org.slf4j.LoggerFactory; public abstract class Foundation { + private static final Logger logger = LoggerFactory.getLogger(Foundation.class); - private static Object lock = new Object(); + private static final Object LOCK = new Object(); private static volatile ProviderManager s_manager; @@ -40,9 +41,9 @@ private static ProviderManager getManager() { try { if (s_manager == null) { // Double locking to make sure only one thread initializes ProviderManager. - synchronized (lock) { + synchronized (LOCK) { if (s_manager == null) { - s_manager = ServiceBootstrap.loadFirst(ProviderManager.class); + s_manager = ServiceBootstrap.loadPrimary(ProviderManager.class); } } } diff --git a/apollo-core/src/main/java/com/ctrip/framework/foundation/internals/provider/DefaultApplicationProvider.java b/apollo-core/src/main/java/com/ctrip/framework/foundation/internals/provider/DefaultApplicationProvider.java index 8370d2961cd..aaf8808511b 100644 --- a/apollo-core/src/main/java/com/ctrip/framework/foundation/internals/provider/DefaultApplicationProvider.java +++ b/apollo-core/src/main/java/com/ctrip/framework/foundation/internals/provider/DefaultApplicationProvider.java @@ -173,7 +173,7 @@ private void initAppLabel() { return; } - m_appLabel=null; + m_appLabel = null; logger.warn("app.label is not available from System Property and {}. It is set to null", APP_PROPERTIES_CLASSPATH); } diff --git a/apollo-core/src/main/java/com/ctrip/framework/foundation/spi/ProviderManager.java b/apollo-core/src/main/java/com/ctrip/framework/foundation/spi/ProviderManager.java index d37495791e9..72a4e571f1e 100644 --- a/apollo-core/src/main/java/com/ctrip/framework/foundation/spi/ProviderManager.java +++ b/apollo-core/src/main/java/com/ctrip/framework/foundation/spi/ProviderManager.java @@ -16,10 +16,17 @@ */ package com.ctrip.framework.foundation.spi; +import com.ctrip.framework.apollo.core.spi.Ordered; import com.ctrip.framework.foundation.spi.provider.Provider; -public interface ProviderManager { +public interface ProviderManager extends Ordered { + String getProperty(String name, String defaultValue); T provider(Class clazz); + + @Override + default int getOrder() { + return Ordered.LOWEST_PRECEDENCE; + } }