Sie erwähnen, dass Ihr Dienst Abhängigkeiten aufweist.
Wenn eine Abhängigkeit in Ihrem Abhängigkeitsdiagramm nicht vollständig zustandslos ist oder wenn eine Ihrer Abhängigkeiten in Ihrem Abhängigkeitsdiagramm so geändert werden sollte, dass sie nicht mehr so vollständig zustandslos ist, schlägt das gesamte System fehl. Und die Fehler, die Sie erhalten, werden wahrscheinlich sehr kryptisch sein, was es schwierig macht, das Problem zu entdecken.
Angenommen, Sie sind ein Entwicklerteam, das an dem Projekt arbeitet. Es ist höchst unwahrscheinlich, dass jeder von ihnen weiß, dass für die IOC-Konfiguration alle diese Komponenten vollständig zustandslos bleiben müssen. Sie mögen es jetzt wissen, aber dieses Bewusstsein wird mit der Zeit verblassen. Und wenn Sie einen neuen Mann einstellen, wird er / sie es auch nicht wissen.
Daher würde ich den IOC-Container definitiv so einrichten, dass jedes Mal eine neue Instanz zurückgegeben wird. Es ist einfach die sicherere Wahl, imho.
Ich würde mir sicherlich keine Sorgen um Ressourcen machen. Die Kosten für den Bau und die Speicherbereinigung von Objekten sind wahrscheinlich unbedeutend im Vergleich zu beispielsweise nur einer einzigen Datenbanksuche.
Die Einzelinstanz war aus einem bestimmten Grund das Standardverhalten von Spring. Eine einzelne Instanz eines zustandslosen Dienstes verbraucht weniger Ressourcen als die ständige Erstellung und Speicherbereinigung vieler Instanzen. Darüber hinaus besteht keine wirkliche Gefahr bei der Freigabe eines zustandslosen Dienstes, es gibt jedoch einige echte Skalierbarkeitsprobleme beim Erstellen mehrerer Instanzen eines Dienstes.
Ich würde also sagen, dass die Einzelinstanz höchstwahrscheinlich Ihr Freund sein wird.
quelle
Ohne weiteren Kontext denke ich, dass es nicht wirklich wichtig ist.
Sie können die Vorteile kurzlebiger Objekte von einer einzelnen Instanz erhalten, wenn diese Instanz einfach die kurzlebigen Objekte für jeden Aufruf erstellt, und Sie können die Vorteile einer einzelnen Instanz von vielen kurzlebigen Objekten erhalten, wenn diese lediglich wirken als Fliehgewichte .
Natürlich ist es unnötig laut, es in eine Richtung einzurichten, nur um es an das Gegenteil zu delegieren. Ich denke, Sie sollten nur raten, ob Sie wahrscheinlich überhaupt einen Status hinzufügen und wenn ja, ob es sich um einen persistenten / globalen Status (z. B. beim Hinzufügen eines Caches) oder einen kurzlebigen / lokalen Status handelt.
quelle