Verbindung von Dependency Injection und Objektregistrierungen

inv_zim

Gesperrter Benutzer
Hi,

ich habe hier in der Firma zurzeit mit einem Projekt zu tun, wo es um eine Art Nachrichtenbehandlung geht. Ich versuche zurzeit, die Abhängigkeiten mit Dependency Injection über Google Guice zu minimieren.

An einer Stelle existiert eine Klasse "MessageManager", in welcher ein Nachrichtenobjekt mit dem Attribut "MessageType" verarbeitet wird. Dieser MessageManager hält eine HashMap<MessageType, MessageHandler>, in welcher verschiedene Objekte vom Typ "MessageHandler" registriert sind. Der Manager holt aus der Hashmap den passenden MessageHandler für die Nachricht, die Nachricht wird an ihn weitergeleitet und er verarbeitet diese. (Etwas kompliziert beschrieben, aber das posten von Code ist mir von hier aus nicht möglich).

Im MessageManager können beliebig viele MessageHandler registriert werden. Macht DI hier überhaupt noch sinn? Die einzelnen MessageHandler besitzen auch Attribute, die ich gerne injizieren würde, aber jeden einzelnen MessageHandler an einer Stelle des Programms über Guice instantiieren, um ihn dann an ein anderes instantiiertes anzuhängen, erscheint mir keine schöne Lösung. Wie würdet ihr das Lösen, die DI außen vor lassen?

Danke fürs Lesen und schönen Gruß,

Tim
 

Landei

Top Contributor
Kennst du "vorher" alle benötigten MessageHandler? Dann würde sich der SPI-Mechanismus anbieten, der sich auch leicht mit Guice kombinieren lässt: Du gibst alle MessageHandler in einer Textdatei an, und lässt sie von Guice laden. Ich hatte das mal in meinem Blog beschrieben.
 
Zuletzt bearbeitet:

inv_zim

Gesperrter Benutzer
Hi,

klasse Artikel, vielen Dank! Den SPI-Mechanismus kannte ich auch noch nicht. Da die MessageHandler alle bekannt sind und zur Laufzeit nicht geändert werden, hast du mir also gerade sehr weitergeholfen! :)

Einen schönen Tag noch,

Tim
 

Ähnliche Java Themen


Oben