Warum nicht einfach ohne Rahmen?
Fragen Sie, worauf Ihre Klasse angewiesen ist, und injizieren Sie dann diese Objekte über (sagen wir) den Konstruktor.
Einige Hinweise:
z.B. Erstellen Sie einfach eine Klasse mit einem Konstruktor:
%Vor% (wobei beide Parameter Schnittstellen sind) und Sie können dann die Kernkomponenten injizieren, von denen Ihr TradeSaver
abhängt (Validierung und Datenbankspeicherung), mit der Möglichkeit, verschiedene Implementierungen für Tests, verschiedene Bereitstellungen usw. bereitzustellen.
Eine weitere Option, die noch nicht erwähnt wurde, ist Yan . Ich habe es in der Vergangenheit benutzt und es war sehr leicht und minimalistisch. Hier ist ein Link mit einer einseitigen Einführung, was (und wie) es tut:
Soweit es DI und IoC betrifft, wird es wahrscheinlich nicht weniger als
Ich bevorzuge Tapestry , aber Google Guice ist ziemlich ähnlich und weit verbreitet, so dass dies eine bessere Wahl sein könnte, da es einfacher ist, Tutorials usw. zu finden.
Ich empfehle dringend, dass Sie einfach Spring ausprobieren. Es ist ein bisschen komplizierter als Guice in den Anfangsstufen, aber die Wrapper für andere APIs und enthaltene Dienstprogramme (LDAPTemplate, JDBCTemplate, HibernateTemplate, Validatoren, usw.) sind die Kosten für die Aufnahme wert.
Nachdem Sie gesagt haben, dass Sie gegen den Versuch, Spring, Guice oder Seam bieten schöne Alternativen.
Im Wesentlichen ist die Abhängigkeitsinjektion nur eine Möglichkeit, Ihren Code für die Wiederverwendbarkeit von Komponenten zu strukturieren. Es erfordert nicht die Verwendung eines Containers. Es bedeutet nur, dass Sie die Verwendung des "neuen" Operators für Ihre Komponenten an den Anfang Ihrer Anwendung verschieben. Beispielsweise könnte Ihr Anwendungseingangspunkt wie folgt aussehen:
%Vor%Diese Phase wird als "Objektgrafikkonstruktion" bezeichnet. Hier verbinden Sie Objekte, die nur ihre Mitarbeiter als Schnittstellen zu bestimmten Implementierungen dieser Schnittstellen kennen.
Diese Startverkabelung kann ziemlich lang und kompliziert werden, wenn Sie Hunderte von Klassen in der Praxis haben. Aus diesem Grund wurden DI-Behälter erfunden: Sie ersetzen den Objekt-Graph-Konstruktionscode in irgendeiner Weise, z. so:
%Vor%Die Konfiguration des Objektdiagramms, das von einem Container erstellt wird, erfolgt normalerweise über XML-Dateien, Attribute für Klassen oder Bindungen, die mit Code definiert sind.
PicoContainer ist der einfachste Weg, um mit DI zu beginnen:
Angenommen, wir haben
%Vor%dann
%Vor%Ich würde Ihnen wärmstens empfehlen, sich eine JSR-330-Implementierung anzusehen, da diese hoffentlich der zukünftige Standard sein sollte. Es gibt einen in JEE6, aber das ist vielleicht für dich zu viel. I glaube dass der Caucho CanDI auch alleine laufen kann.
Tags und Links java spring dependency-injection guice