+ *
+ * install(new ArchaiusModule() {
+ * {@literal @}Override
+ * protected void bindDefaultReaders() {}
+ *
+ * {@literal @}Override
+ * protected void configureArchaius() {
+ * Multibinder.newSetBinder(this.binder(), ConfigReader.class).addBinding().to(TypesafeConfigReader.class).asEagerSingleton();
+ * }
+ * });
+ *
+ *
+ */
+ protected void bindDefaultReaders() {
+ Multibinder.newSetBinder(binder(), ConfigReader.class)
+ .addBinding().to(PropertiesConfigReader.class).in(Scopes.SINGLETON);
+ }
+
@Override
protected final void configure() {
+ bindDefaultReaders();
install(new InternalArchaiusModule());
configureArchaius();
diff --git a/archaius2-guice/src/main/java/com/netflix/archaius/guice/InternalArchaiusModule.java b/archaius2-guice/src/main/java/com/netflix/archaius/guice/InternalArchaiusModule.java
index b87caece8..ca4b9c0f1 100644
--- a/archaius2-guice/src/main/java/com/netflix/archaius/guice/InternalArchaiusModule.java
+++ b/archaius2-guice/src/main/java/com/netflix/archaius/guice/InternalArchaiusModule.java
@@ -3,21 +3,13 @@
import com.google.inject.AbstractModule;
import com.google.inject.Inject;
import com.google.inject.Provides;
-import com.google.inject.Scopes;
import com.google.inject.Singleton;
import com.google.inject.matcher.Matchers;
-import com.google.inject.multibindings.Multibinder;
import com.netflix.archaius.ConfigProxyFactory;
import com.netflix.archaius.DefaultConfigLoader;
import com.netflix.archaius.DefaultDecoder;
import com.netflix.archaius.DefaultPropertyFactory;
-import com.netflix.archaius.api.CascadeStrategy;
-import com.netflix.archaius.api.Config;
-import com.netflix.archaius.api.ConfigLoader;
-import com.netflix.archaius.api.ConfigReader;
-import com.netflix.archaius.api.Decoder;
-import com.netflix.archaius.api.PropertyFactory;
-import com.netflix.archaius.api.PropertyRepository;
+import com.netflix.archaius.api.*;
import com.netflix.archaius.api.config.CompositeConfig;
import com.netflix.archaius.api.config.SettableConfig;
import com.netflix.archaius.api.exceptions.ConfigException;
@@ -31,13 +23,11 @@
import com.netflix.archaius.config.EnvironmentConfig;
import com.netflix.archaius.config.SystemConfig;
import com.netflix.archaius.interpolate.ConfigStrLookup;
-import com.netflix.archaius.readers.PropertiesConfigReader;
-
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicInteger;
import javax.inject.Named;
import javax.inject.Provider;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
final class InternalArchaiusModule extends AbstractModule {
static final String CONFIG_NAME_KEY = "archaius.config.name";
@@ -65,9 +55,6 @@ protected void configure() {
bind(ConfigurationInjectingListener.class).toInstance(listener);
requestStaticInjection(ConfigurationInjectingListener.class);
bindListener(Matchers.any(), listener);
-
- Multibinder.newSetBinder(binder(), ConfigReader.class)
- .addBinding().to(PropertiesConfigReader.class).in(Scopes.SINGLETON);
}
@Provides
diff --git a/archaius2-guice/src/test/java/com/netflix/archaius/guice/InternalArchaiusModuleTest.java b/archaius2-guice/src/test/java/com/netflix/archaius/guice/InternalArchaiusModuleTest.java
index b8f160668..56342ecfb 100644
--- a/archaius2-guice/src/test/java/com/netflix/archaius/guice/InternalArchaiusModuleTest.java
+++ b/archaius2-guice/src/test/java/com/netflix/archaius/guice/InternalArchaiusModuleTest.java
@@ -1,6 +1,10 @@
package com.netflix.archaius.guice;
+import com.google.inject.AbstractModule;
import com.google.inject.Guice;
+import com.google.inject.multibindings.Multibinder;
+import com.netflix.archaius.api.ConfigReader;
+import com.netflix.archaius.readers.PropertiesConfigReader;
import org.junit.Test;
public class InternalArchaiusModuleTest {
@@ -8,7 +12,14 @@ public class InternalArchaiusModuleTest {
@Test
public void succeedOnDuplicateInstall() {
Guice.createInjector(
- new InternalArchaiusModule(),
- new InternalArchaiusModule());
+ new AbstractModule() {
+ @Override
+ protected void configure() {
+ Multibinder.newSetBinder(this.binder(), ConfigReader.class).addBinding().to(PropertiesConfigReader.class).asEagerSingleton();
+ }
+ },
+ new InternalArchaiusModule(),
+ new InternalArchaiusModule()
+ );
}
}