Mein aktuelles Projekt nutzt Spring, und unser Architekt hat entschieden, Spring Dienste, Repositories und Factory-Objekte, aber KEINE Domänenobjekte verwalten zu lassen. Wir verfolgen das Domain-Design sehr genau. Der Grund dafür, dass keine Feder für Domänenobjekte verwendet wird, ist in erster Linie, dass die Feder nur eine statische Abhängigkeitsinjektion erlaubt. Was ich mit der statischen Abhängigkeitsinjektion meine, ist, dass Abhängigkeiten in der xml-Konfiguration angegeben sind und sie "eingefroren" werden.Laufzeitabhängigkeitsinjektion mit Spring
Ich vielleicht falsch, aber mein derzeitiges Verständnis ist, dass, obwohl meine Domäne nur Schnittstellen verwendet, um mit Objekten zu kommunizieren, aber Frühling Xml-Konfiguration zwingt mich, eine konkrete Abhängigkeit anzugeben. Daher müssen alle konkreten Abhängigkeiten zum Zeitpunkt der Bereitstellung aufgelöst werden. Manchmal ist dies nicht machbar. Die meisten unserer Anwendungsfälle basieren auf der Injektion eines bestimmten Typs basierend auf den Laufzeitdaten oder einer Nachricht, die von einem Endbenutzer empfangen wird.
Die meisten unserer Design folgt Befehlsmuster. Wenn wir also einen Befehl erhalten, möchten wir unser Domänenmodell konstruieren und basierend auf Daten, die wir von einem Befehl erhalten haben, injizieren wir eine bestimmte Menge von Typen in unser gesamtes Wurzelobjekt. Aus diesem Grund sind wir aufgrund der fehlenden Möglichkeit, ein Domänenmodell auf Basis von Laufzeitdaten zu konstruieren, gezwungen, statische Factory-Methoden, Builder und Factory-Patterns zu verwenden.
Kann jemand bitte beraten, wenn Frühling ein Problem zum oben genannten Szenario hat?
Ich könnte AOP verwenden, um Abhängigkeiten zu injizieren, aber dann nutze ich die Infrastruktur des Frühlings nicht.
Das ist Spring ein bisschen kurz. Es ist fähig zu diesen Dingen, es erfordert nur ein bisschen mehr Aufwand. – skaffman