Hallo,
derzeit haben wir es so gelöst, dass wir eine große "Services" Klasse haben, in welcher alle Services per Setter und Getter gesetzt bzw. geholt werden.
Anschließend wird zwischen verschiedenen GUI Fenstern immer im Konstruktor das services-Object übergeben, wodurch am Ende alle GUI Elemente immer zugriff auf ihre benötigten Services haben.
Wir haben jetzt aber von unseren Professoren erfahren, dass wir es so nicht lösen dürfen, sondern es über Spring lösen sollen. Allerdings ist uns nicht wirklich klar, wie das funktionieren soll.
1) Wenn wir die benötigten Services in den einzelnen GUI Fenstern jeweils mit @autowired annotieren, dann werden die Services aber erst bei den Settern gesetzt, unsere Konstruktoren brauchen aber schon die ganzen Services. Die "beste Idee" die wir derzeit haben ist, das wir den gesamten Konstruktor immer in eine "init()" Methode rauskopieren und dann bei den Setter aufrufen, was aber richtig schlecht ist... (dann wird ja auch bei mehreren Settern es öfters aufgerufen bzw. das Fenster öfters initialisiert).
2) Wenn wir alle Fenster im Beans-File definieren, dann wird ja beim Start alles aufeinmal gezeichnet, was zu einer enormen Verzögerung beim Starten der App führen würde. Außerdem müsste man ja irgendwie dann auf den Application Context in den GUI Fenstern zugreifen können, d.h. man bräuchte den Application Context in allen Konstruktoren (was insgesamt ja wieder die gleiche Lösung wie mit der Services Klasse wäre) und das wäre ja auch eine zyklische Abhängigkeit, weil wir im Beans File vom Application Context den Application Context selbst definieren müssten.....?
Also meine Frage insgesamt wäre: Wie macht man das normalerweise, dass man innerhalb der GUI auf die Services zugreifen kann über Spring?
lg
derzeit haben wir es so gelöst, dass wir eine große "Services" Klasse haben, in welcher alle Services per Setter und Getter gesetzt bzw. geholt werden.
Anschließend wird zwischen verschiedenen GUI Fenstern immer im Konstruktor das services-Object übergeben, wodurch am Ende alle GUI Elemente immer zugriff auf ihre benötigten Services haben.
Wir haben jetzt aber von unseren Professoren erfahren, dass wir es so nicht lösen dürfen, sondern es über Spring lösen sollen. Allerdings ist uns nicht wirklich klar, wie das funktionieren soll.
1) Wenn wir die benötigten Services in den einzelnen GUI Fenstern jeweils mit @autowired annotieren, dann werden die Services aber erst bei den Settern gesetzt, unsere Konstruktoren brauchen aber schon die ganzen Services. Die "beste Idee" die wir derzeit haben ist, das wir den gesamten Konstruktor immer in eine "init()" Methode rauskopieren und dann bei den Setter aufrufen, was aber richtig schlecht ist... (dann wird ja auch bei mehreren Settern es öfters aufgerufen bzw. das Fenster öfters initialisiert).
2) Wenn wir alle Fenster im Beans-File definieren, dann wird ja beim Start alles aufeinmal gezeichnet, was zu einer enormen Verzögerung beim Starten der App führen würde. Außerdem müsste man ja irgendwie dann auf den Application Context in den GUI Fenstern zugreifen können, d.h. man bräuchte den Application Context in allen Konstruktoren (was insgesamt ja wieder die gleiche Lösung wie mit der Services Klasse wäre) und das wäre ja auch eine zyklische Abhängigkeit, weil wir im Beans File vom Application Context den Application Context selbst definieren müssten.....?
Also meine Frage insgesamt wäre: Wie macht man das normalerweise, dass man innerhalb der GUI auf die Services zugreifen kann über Spring?
lg