Hallo zusammen,
der Aufbau bzw. die Architektur von JSF hab ich soweit verstanden. Nun habe ich jetzt aber schon häufiger gelesen, dass Spring und JSF eine perfekte Kombination seine, allerdings frage ich mich, da JSF bereits das MVC-Pattern umsetzt, warum bzw. wozu ich Spring überhaupt noch brauche!?
Ich habe zwar schon einiges zu Spring gefunden, werde aber immer mit der vielzahl von Informationen erschlagen und finde auf meine IMOH triviale Frage keine Antwort!
Ich hoffe deshalb, dass Ihr mir weiterhelfen könnt!!!
Aber ich versteh dich, man ließt sehr viel und versteht oft gar nicht, was einem das alles bringt... einfach weil man mit vielen Problemen, die Spring löst, einfach nocht nicht konfrontiert wurde....
Ich arbeite zwar nicht mit jsf, aber ich denke ein Haupgrund für Spring ist der mächte IOC Container... erhöht die modularisierung, testbarkeit usw..
Ansonsten bringt SPring noch viel mehr mit, muss halt entscheiden ob man das alles braucht, oder ohne Spring besser dran ist.
IMHO nutzt man Spring wenn immer möglich, wenn man sich mal damit auskennt.
Ansonsten bringt SPring noch viel mehr mit, muss halt entscheiden ob man das alles braucht, oder ohne Spring besser dran ist.
IMHO nutzt man Spring wenn immer möglich, wenn man sich mal damit auskennt.
Jahre... oder ein paar Stunden... je nachdem was man alles lernen will, alles zu erlernen dauert Jahre, den IoC bzw. DI Kern hat man recht schnell drauf
Wenn ich das richtig interpretiert habe, ist der IOC-Container und die DI ja eigentlich auf der Bean-Ebene, also eher im "unteren Teil" (nah an der DB bzw. Datenhaltung) des Models, oder nicht?
Wenn ich das richtig interpretiert habe, ist der IOC-Container und die DI ja eigentlich auf der Bean-Ebene, also eher im "unteren Teil" (nah an der DB bzw. Datenhaltung) des Models, oder nicht?
Wenn ich das richtig interpretiert habe, ist der IOC-Container und die DI ja eigentlich auf der Bean-Ebene, also eher im "unteren Teil" (nah an der DB bzw. Datenhaltung) des Models, oder nicht?
IoC ist ein merkmal das jedes Framework bietet, quasi Definition von Framework.
DI hat erstmal nix mit DB zu tun, sondern damit, wie die Abhängigkeiten deiner Klassen/Komponenten erzeugt und injiziert werden.
Ja, ein POJO erbt von keiner Framework Klasse, ein POJO ist nix weiter als ein "Plain Old Java Object", also ein Stinknormales Javaobjekt, ohne spezielle Superklasse.
Wichtiger in diesem Zusammenhang ist die JavaBeans Spek. und die Konventionen wie Getter & Setter benannt werden.
Mir ergeht es genau wie "JSFundSpring"! Vorallem verstehe ich nicht, warum JSF und Spring häufig in Kombination eingesetzt werden, aber JSF und Struts, oder Struts und Spring als "Konkurrenz-Produkte" verglichen werden. Ist JSF nicht eher ein Frontend-Framework und Struts und Spring eher ein MVC-Framework? Ich such schon ewig nach der grafischen Abbildung, die diese Frameworks grafisch abbildet und die Unterschiede verdeutlicht. Vielleicht könnt ihr unser mentales Bild der Frameworks vervollständigen / neu orden! Alle Informationen die ich bisher gefunden habe, sind zwar schön detailliert, aber als Neueinsteiger in unbekannte Frameworks verliert man schnell den Überblick!
Zu Struts: Vergiss es, ist Steinalt und für Neuentwicklungen schon seit Jahren nicht mehr interessant.
JSF bietet MVP fürs Web, stark angelehnt an Swing.
Ich habe Struts nur als Beispiel verwendet, vorallem weil es in vielen Frameworkevaluationen aufgeführt ist. Intuitiv hätte ich mich für Spring entschieden, mir ging es eigentlich nur um die Einordnung von diesen Frameworks. Ist evtl. auch ganz hilfreich für "JSFundSpring", um einfach mal den groben Unterschied zu erkennen, ohne die Frameworks bis ins letze Detail zu kennen!
Beratungsresistent, doer meinst du das ernst?
struts1 wird seit Jahren nicht mehr weiterentwickelt, struts2 ist sozusagen schon in den Startlöchern steckengeblieben.
Spring lässt sich auch nicht wirklich mit Struts vergleichen, höchstens edas eine oder andere Modul von Spring...
Ne, natürlich nicht! War nur ironisch gemeint, da du vom Alter gesprochen hast. Wenn du dich auf die Technik beziehst, geb ich dir völlig Recht!!!
Hab eben folgendes gefunden: Spring vs. Struts vs. JSF [Archive] - Spring Community Forums
Also ist Spring MVC nur ein optionales Modul von Spring!? Was ist dann der eigentliche Spring "Core" und was für ein Typ von Framework ist Spring (nicht Spring MVC) dann eigentlich?
Lies doch den Link den ich oben gepostet habe, Spring bietet erstmal DI (Core, wird IoC genannt), und vieles vieles mehr, aber integraler Bestandteil von Spring ist eben nur die DI.
SpringMVC, SpringWebFlow, SpringDM, Spring BlazeDS, Spring WS, Spring AOP, Spring-JPA, usw. sind zusätze.
Ja, das sind sehr viele "Zusätze", und die alle zu erlernen dauert eben Jahre
Durch eure Diskussion und die Links habe ich momentan folgendes Verständnis:
Spring ist im Eigentlichen (ohne alle Zusätze) NUR ein Framework, um Objekten die benötigten Ressourcen und Objekte zuzuweisen (DI), um die Steuerung bzw. den Kontrollfluss des Objekt-Ressourcen-Netzes zu Übernehmen (IoC) und um Transaktionen zu managen (AOP)! Somit ist Spring ein IoC-Framework und vergleichbar mit ähnlichen Frameworks wie PicoContainer, EJB, ...!
Wäre das soweit korrekt?
Könnte ich dann auch JSF einsetzen, aber anstatt dem integrierten MVC von JSF, Spring MVC verwenden? Wenn ja, welche Gründe könnte es dafür geben?
Bei weiterem googeln bin ich auch auf JBoss Seam gestoßen. Ist Seam ebenso ein IoC-Framework wie Spring und damit vergleichbar?
Spring ist im Eigentlichen (ohne alle Zusätze) NUR ein Framework, um Objekten die benötigten Ressourcen und Objekte zuzuweisen (DI), um die Steuerung bzw. den Kontrollfluss des Objekt-Ressourcen-Netzes zu Übernehmen (IoC) und um Transaktionen zu managen (AOP)! Somit ist Spring ein IoC-Framework und vergleichbar mit ähnlichen Frameworks wie PicoContainer, EJB, ...!
Wie gesagt, IoC ist nur ein Merkmal, dass alle(!) Frameworks bieten, hat noch nix mit Spring oder DI zu tun.
AOP bzw. Transaktionsmagement ist kein Integraler Bestandteil von Spring IoC, denn Transaktionen gehören meist zu DBs.
SEAM bietet auch DI, allerdings nicht so mächtig wie Spring(und vor allem nicht so viele Zusatzmodule), der Fokus liegt auf der Vereinfachung der Integration von JSF/EJB/JPA.
Nochmals: Alle(!) "echten" Frameworks bieten IoC, hat nix direkt mit Web, Persistenz oder GUI zu tun (obwohl GUI Frameworks die klassichen Vertreter von IoC sind), siehe den Artikel von Fowler.
Nebenbei, bis jetzt dreht sich die Diksussion doch eher um Webbasierte Techniken/Frameworks, bitte nicht vergessen das Webbrowser nur eine Möglichkeit von GUIs sind, Rich- bzw Fat Clients sind auch noch da(Eclipse RCP, Netbeans RCP, JavaFX, etc.).
Spring ist im Eigentlichen (ohne alle Zusätze) NUR ein Framework, um Objekten die benötigten Ressourcen und Objekte zuzuweisen (DI)! Somit ist Spring im ENGEREN Sinne ein DI-Framework und vergleichbar mit ähnlichen Frameworks wie PicoContainer, EJB, JBoss Seam, ...!
Spring MVC dagegen ist nur ein "Zusatz" von Spring und damit eine Alternative zu JSF oder dem veralteten Struts. Weitere Alternativen wären aber auch Induction, Stripes, VRaptor, ...! JSF bietet allerdings im Vergleich zu Spring MVC mehr Frontend- bzw. View-Komponenten, wobei Spring MVC eher auf Modularität und auf Unabhängigkeit von der verwendeten View-Technology basiert! Damit kann Spring, im Gegensatz zu JSF, auch in anderen Anwendungen mit Nicht-Web-GUIs also bspw. einem Java-Client eingesetzt werden (natürlich auf Serverseite!).
Wäre das jetzt korrekt, oder habe ich es immer noch nicht verstanden?
Allerdings stellt sich mir immer noch folgende Frage:
Könnte ich dann auch JSF einsetzen, aber anstatt dem integrierten MVC von JSF, Spring MVC verwenden? Wenn ja, welche Gründe könnte es dafür geben, bspw. View ist loser gekoppelt, als wenn nur JSF eingesetzt wird?
Allerdings stellt sich mir immer noch folgende Frage:
Könnte ich dann auch JSF einsetzen, aber anstatt dem integrierten MVC von JSF, Spring MVC verwenden? Wenn ja, welche Gründe könnte es dafür geben, bspw. View ist loser gekoppelt, als wenn nur JSF eingesetzt wird?
Naja, Spring WebFlow muss nicht mit JSF eingesetzt weren, aber kann damit eingesetzt werden (mit SpringFaces).
Nebenbei, JSF ist mehr als ein paar ServletMappings.
Kenne WebFlow selber wie gesagt nicht, aber Erfahrungsgemäss bietet Spring (oder versucht es zumindest) ein paar Erleichterungen("komfortabler") einzubringen, inkl. Unterstützung für Unittests.
Ich habe im Zusammenhang mit Spring Web Flow auf der Seite von Spring folgendes gefunden:
"The Spring Faces module contains Spring's support for JavaServerFaces. This support allows you to use JSF as a View technology within a familiar Spring MVC and Web Flow Controller environment. With this architectural approach, you combine the benefits of the JSF UI component model with the benefits of a Web MVC architecture. Spring Faces also includes a lightweight component library built on Spring JavaScript for declaratively enabling Ajax and client-side validation behaviors in a progressive manner."