I'm trying to figure out the proper way to configure providers and then also use them in modules.
I have this class:
public class Initializer
extends AbstractModule {
private static final Logger logger = LoggerFactory.getLogger(Initializer.class);
private Environment env;
private Config config;
public Initializer(Environment env, Config config) {
this.env = env;
this.config = config;
}
@Override
protected void configure() {
bind(ClientFactoryBean.class).toProvider(ClientFactoryBeanProvider.class).asEagerSingleton();
try {
ClientFactoryBean clientFactory = getProvider(ClientFactoryBean.class).get();
Client client = clientFactory.create(config.getString("adminUser"), config.getString("adminPassword"));
// do client configuration
} catch (Exception e) {
logger.error("Error initializing", e);
}
}
}
But I get this error:
[error] c.g.u.m.Initializer - Error initializing
java.lang.IllegalStateException: This Provider cannot be used until the Injector has been created.
at com.google.common.base.Preconditions.checkState(Preconditions.java:456)
at com.google.inject.spi.ProviderLookup$1.get(ProviderLookup.java:102)
at c.g.u.m.Initializer.configure(Initializer.java:39)
at com.google.inject.AbstractModule.configure(AbstractModule.java:62)
at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:340)
at com.google.inject.spi.Elements.getElements(Elements.java:110)
at com.google.inject.util.Modules$OverrideModule.configure(Modules.java:177)
at com.google.inject.AbstractModule.configure(AbstractModule.java:62)
at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:340)
at com.google.inject.spi.Elements.getElements(Elements.java:110)
How am I supposed to properly initialize and use a provider as part of a module configuration?
Thanks,