Eigene Dependency Injections definieren?

lam_tr

Top Contributor
Hallo zusammen,
ich glaube, ich habe die Umsetzung der DI im eigenen Projekt noch nicht wirklich verstanden.
Die Verwendung an sich ist nicht all zu schwer. Das habe ich auch schon sehr oft in Eclipse Frameworks wie Eclipse RCP 4 benutzt.

Aber wenn ich in mein eigenes Projekt benutzen möchte, wie:

class Application{
@Inject FileService service;
// verwende diesen Service in der kompletten Klasse
}

Ich habe mal ein paar Tutorials in der Form probiert FileService http://java-bytes.blogspot.de/2010/02/google-guice-example.html.

Dort wird beispielsweise das Modul injeziert und den MathClient sozusagen geholt.
Code:
Injector injector = Guice.createInjector(new MathModule());
MathClient mathClient = injector.getInstance(MathClient .class);
Wie kann ich aber an der Stelle ein Field Injection machen und einfach mache?
Code:
@Inject MathClient client

Ist vermutlich sehr einfach umzusetzen, aber ich bin etwas zu blöd dafür.

Hoffe ihr könnt mir da weiterhelfen.

Vielen Dank
lam
 
Ich verstehe deine Frage nicht richtig.

Du musst jede Instanz, welche DI nutzt, vom DI-Framework beziehen. In diesem Fall injector.getInstance(Application.class).
 
Genau Tobse, aber es gibt doch auch einen Wege das Objectt über @Inject Field field zu holen oder?
Was meinst du denn? @Inject ist eine Annotation wie jede andere auch. Nur weil da eine Annotation an dem Feld steht, passiert keine Magie im Hintergrund. Java selbst hat mit DI 0,0 am Hut.

Ein DI Framework benutzt Reflection um die Annotationen an den Feldern zu sehen. Aufgrund dieser Infos befüllt das DI Framework die Felder. Ohne das DI Framework zu involvieren gibts keine DI.

P.S.:
In Spring mag der Eindruck entstehen, dass das automatisch passiert. Tatsächlich macht Spring aber auch nichts anderes, als jede Objektinstanz über das DI Framework zu erstellen. Im Spring Quellcode muss man das new Keyword vmtl. mit der Lupe suchen.
 

Zurück
Oben