Google Guice Field Injection returns null

lam_tr

Top Contributor
Hallo zusammen,

ich habe ein Component Klasse implementiert, der den EventBus über Field Injection holt, warum bekomme ich an der Stelle immer null?

Mit googeln bin ich nicht wirklich weit gekommen, wird das so nicht benutzt?

Hier die Starter Klasse
Code:
public class FieldInjectMain {

    public static void main(String[] args) {
        Guice.createInjector(new GlobalModule());
        Component component = new Component();
        component.init();
    }
}

Component Klasse
Code:
public class Component {

    @Inject
    EventBus eventBus;

    public void init() {
        System.out.println(eventBus);
    }
}

Modul Klasse

Code:
public class GlobalModule extends AbstractModule {

    @Override
    protected void configure() {
        bind(EventBus.class).in(Singleton.class);
    }
}

Habe ich an der Stelle etwas vergessen? Oder muss ich die Component Klasse auch zurerst binden damit ich den EventBus injecten kann?

Viele Grüße
lam
 
Du solltest die Component-Klasse vom Injector erstellen lassen (getInstance) oder die Abhängigkeiten vom Injector injizieren lassen (injectMembers).

In deinem aktuellem Code bekommt Guice niemals was von dem Component-Objekt mit, kann also auch nichts injizieren 😉

(Und als Empfehlung: Nutz Konstruktor- statt Field-Injection 😉)
 

Zurück
Oben