How to inject Injector?

dependency-injection, guice, java

Solution

You should not be using the `Injector` directly. Rather pass in the `Provider<FooClass>` instead. Also, you should be injecting the provider in the places where you use `FooClass`.

private final Provider<FooClass> provider;

@Inject
public ClassWhereFooIsUsed(Provider<FooClass> provider) {
    this.provider = provider;
}

.... somewhere else
FooClass f = provider.get(); // This is lazy

Problem

Situation: i need lazy dependency instantiation in some `FooClass`, so i pass `Injector` to class as a constructor parameter. ``` private final Injector m_injector; public FooClass(@Named("FooInjector") Injector injector) { m_injector = injector; } ``` But guice doesn't permit to bind core classes (injectors, modules and etc). What is the solution?

Original source