Hallo und schönen Sonntag an das Board!
Wie der Titel schon vermuten lässt habe ich ein kleines Problem mit Dependency Injection bei Spring. Das Problem lässt sich in zwei Bereiche teilen einmal in ein Implementierungsproblem und einmal in ein Verständnissproblem. So nun aber mal zur Frage.
Also fangen wir mit der Implementierungs Geschichte an.
ich habe nun folgenden Code
Die Klasse Writer ist dazu gedacht ein Objekt zu erstellen das einen Kommentar zu einem Buch repräsentiert. Dieses Objekt wird dann in eine Datenbank gechrieben. Laut Dependency Injektion ist es nun aber so das die Klasse Writer das Object Kommentar Object nicht selbst aufruft sondern es von einem Dependency_injection_Container übergeben bekommt.
Nun gibt es eine GUI die das ganze Programm steuert (Pseudo Code)
So nun wird ja beim Klick auf Write_Comment das Object Writer geholt welchem gleich bei initailsierung das Object KommtentarObject übergeben wird in das die Klasse Writer reinschreibt und das dann in die Datenbank ablegt.
So nun möchte ich aber mit einem Aufruf von wc.write_comment() nicht nur ein Object erstellen sondern eine ganze Reihe dies ist aber nicht möglich da ich eben nur ein Object übergebe.
Die einzige Möglichkeit dies zu tun die mir einfällt ist das ich den DI_Container auch in der Klasse Wirter importe und mir das Object erst dort hole. Aber bau ich dann nicht neue Abhängigkeiten da ich dann nun schon zwei Klassen habe den DI_Container importieren ? Oder habe ich das Konzept falsch verstanden ?
Die nächste Frage ist wenn ich das wie oben gezeigt mache. Ich habe eine Klasse die ein Object erwartet dieses Obejct wird im DI_Container erstellt und der Klasse deren Instanz wiederum im selben DI_Container erstellt wird übergeben bau ich dann nicht neue Abhängigkeiten ich möchte die Abhängigkeiten doch mittels Dipendency_injection auflösen um die Obejekte zu isolieren und austauschbar zu machen ?
Ich hoffe meine Fragen waren verständlich formuliert und es kan mir jemand weiterhelfen.
Danke schon im Vorraus für euere Antworten
Wie der Titel schon vermuten lässt habe ich ein kleines Problem mit Dependency Injection bei Spring. Das Problem lässt sich in zwei Bereiche teilen einmal in ein Implementierungsproblem und einmal in ein Verständnissproblem. So nun aber mal zur Frage.
Also fangen wir mit der Implementierungs Geschichte an.
ich habe nun folgenden Code
Code:
class Writer:
def __init__(KommentarObjekt):
self.__Kobj = KommentarObjekt
def wirte_comment(self):
text ="Hallo Welt"
Author"Hans"
Buch = "1984"
# Inititalisiere Kobj1 mit im Konstruktor übergeben Object
Kobj1 = self.__Kobj
# Initialisiere Object mit obigen Strings
Kobj1.TEXT = text
Kobj1.AUTHOR = Author
Kobj1.BUCH = Buch
# Objekt wird in Datenbank geschrieben
schreibe Objekt in Datenbank .....
Code:
from springpython.config import Pythonconfig
from springpython.config import Object
from KommentarObject import KommentarObject
from Wirter import Writer
class DI_Container(PythonConfig):
def __init__(self):
super(DI_Container,self).__init__()
@Object
def kommentarobject(self):
return KommentarObject()
# Hier wird das Kommentarobject der Instanz von Wirter übergeben
@Object
def writer(self):
return Writer(self.kommentarobject())
Code:
from DI_Container import DI_Container
class Hauptprogramm(GUI.Dialog):
def __init__(self):
# erstelle Button für die Funktion Wirte_Comment
def Write_Comment(self):
wc = container.get_object("writer")
wc.write_comment()
So nun möchte ich aber mit einem Aufruf von wc.write_comment() nicht nur ein Object erstellen sondern eine ganze Reihe dies ist aber nicht möglich da ich eben nur ein Object übergebe.
Die einzige Möglichkeit dies zu tun die mir einfällt ist das ich den DI_Container auch in der Klasse Wirter importe und mir das Object erst dort hole. Aber bau ich dann nicht neue Abhängigkeiten da ich dann nun schon zwei Klassen habe den DI_Container importieren ? Oder habe ich das Konzept falsch verstanden ?
Die nächste Frage ist wenn ich das wie oben gezeigt mache. Ich habe eine Klasse die ein Object erwartet dieses Obejct wird im DI_Container erstellt und der Klasse deren Instanz wiederum im selben DI_Container erstellt wird übergeben bau ich dann nicht neue Abhängigkeiten ich möchte die Abhängigkeiten doch mittels Dipendency_injection auflösen um die Obejekte zu isolieren und austauschbar zu machen ?
Ich hoffe meine Fragen waren verständlich formuliert und es kan mir jemand weiterhelfen.
Danke schon im Vorraus für euere Antworten