Problem mit Spring Python bzw mit Dependency Injection bei Spring allgemein

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

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 .....
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.

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())
Nun gibt es eine GUI die das ganze Programm steuert (Pseudo Code)

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 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
 
Zurück
Oben