Situazione: ho bisogno di un'istanza di dipendenza pigra in alcuni FooClass
, quindi passo Injector
alla classe come parametro costruttore.
private final Injector m_injector;
public FooClass(@Named("FooInjector") Injector injector) {
m_injector = injector;
}
Ma guice non permette di associare classi di base (iniettore, moduli e così via). Qual è la soluzione?
- Alex M
Non dovresti utilizzare direttamente Injector
. Piuttosto passa in Provider<FooClass>
invece. Inoltre, dovresti iniettare il provider nei luoghi in cui usi FooClass
.
private final Provider<FooClass> provider;
@Inject
public ClassWhereFooIsUsed(Provider<FooClass> provider) {
this.provider = provider;
}
.... somewhere else
FooClass f = provider.get(); // This is lazy