Frage

Ich versuche derzeit, mit dem Spring-Framework in die Java-EE-Entwicklung einzusteigen.Da ich neu bei Spring bin, kann ich mir nur schwer vorstellen, wie ein gut laufendes Projekt beginnen sollte.

Hast du welche? empfohlene Vorgehensweise, Tipps oder Major NICHTS tun für den Anfang?Wie haben Sie mit Spring angefangen – großes Projekt oder kleine, Tutorial-ähnliche Anwendungen?Welche Technologie haben Sie gleich genutzt:AOP, komplexer Ruhezustand...

War es hilfreich?

Lösung

Kleiner Tipp: Ich fand es hilfreich, meine Spring-XML-Kontextdateien je nach Anwendungsanliegen zu modularisieren und klar zu kennzeichnen.Hier ist ein Beispiel für eine Web-App, an der ich gearbeitet habe:

  • MyProject / src / main / resources / spring /
    • datasource.xml - Meine Single-Data-Source-Bean.
    • persistence.xml - Meine DAOs/Repositories.Kommt drauf an datasource.xml Bohnen.
    • Services.xml - Service-Layer-Implementierungen.Dies sind normalerweise die Beans, auf die ich mithilfe von AOP Transaktionalität anwende.Kommt drauf an persistence.xml Bohnen.
    • controllers.xml - Meine Spring MVC-Controller.Kommt drauf an services.xml Bohnen.
    • Ansichten.xml - Meine Ansichtsimplementierungen.

Diese Liste ist weder perfekt noch erschöpfend, aber ich hoffe, sie verdeutlicht den Punkt.Wählen Sie die für Sie am besten geeignete Benennungsstrategie und Granularität.

Aufgrund meiner (begrenzten) Erfahrung habe ich gesehen, dass dieser Ansatz die folgenden Vorteile bringt:

Klarere Architektur

Eindeutig benannte Kontextdateien geben denjenigen, die mit Ihrer Projektstruktur nicht vertraut sind, einen angemessenen Ort, um nach Bean -Definitionen zu suchen.Kann das Erkennen zirkulärer/unerwünschter Abhängigkeiten etwas einfacher machen.

Hilft beim Domain-Design

Wenn Sie eine Bean-Definition hinzufügen möchten, diese aber nicht gut in Ihre Kontextdateien passt, entsteht möglicherweise ein neues Konzept oder ein neues Problem?Beispiele:

  • Angenommen, Sie möchten Ihre Serviceschicht mit AOP transaktional gestalten.Fügen Sie diese Bean-Definitionen hinzu? services.xml, oder legen Sie sie in ihre eigenen transactionPolicy.xml?Besprechen Sie es mit Ihrem Team.Sollte Ihre Transaktionsrichtlinie steckbar sein?
  • Fügen Sie Acegi/Spring Security-Bohnen hinzu controllers.xml Datei, oder erstellen Sie eine security.xml Kontextdatei?Haben Sie unterschiedliche Sicherheitsanforderungen für verschiedene Bereitstellungen/Umgebungen?

Integrationstests

Sie können eine Teilmenge Ihrer Anwendung für Integrationstests vernetzen (z. B.:Angesichts der oben genannten Dateien müssen Sie zum Testen der Datenbank nur eine erstellen datasource.xml Und persistence.xml Bohnen).

Insbesondere können Sie eine Integrationstestklasse wie folgt mit Anmerkungen versehen:

@ContextConfiguration(locations = { "/spring/datasource.xml" , "/spring/persistence.xml" })

Funktioniert gut mit Beans Graph von Spring IDE

Mit vielen fokussierten und gut benannten Kontextdateien können Sie ganz einfach benutzerdefinierte BeansConfigSets erstellen, um die Ebenen Ihrer App mithilfe von Spring-IDEs zu visualisieren Bohnendiagramm.Ich habe dies bereits verwendet, um neuen Teammitgliedern einen allgemeinen Überblick über die Organisation unserer Anwendung zu geben.

Andere Tipps

Konzentrieren Sie sich zunächst auf das Herzstück des Frühlings:Abhängigkeitsspritze.Sobald Sie alle Einsatzmöglichkeiten von DI kennen, denken Sie über die interessanteren Teile wie AOP, Remoting, JDBC-Vorlagen usw. nach.Mein bester Rat ist also, den Einsatz von Spring aus dem Kern herauswachsen zu lassen.

Beste Übung?Wenn Sie die Standard-XML-Konfiguration verwenden, verwalten Sie die Größe der einzelnen Dateien und kommentieren Sie sie mit Bedacht.Sie denken vielleicht, dass Sie und andere Ihre Bean-Definitionen perfekt verstehen werden, aber in der Praxis ist es etwas schwieriger, sie wiederherzustellen als einfachen alten Java-Code.

Viel Glück!

Zunächst geht es bei Spring um Modularität und es funktioniert am besten, wenn man sich darauf konzentriert, kleine Komponenten zu schreiben, die eine Aufgabe erfüllen und diese auch gut können.

Wenn Sie allgemeine Best Practices befolgen, wie zum Beispiel:

  • Definieren einer Schnittstelle statt abstrakter Klassen
  • Typen unveränderlich machen
  • Halten Sie die Abhängigkeiten für eine einzelne Klasse so gering wie möglich.
  • Jede Klasse sollte eine Sache tun und zwar gut.Große monolithische Klassen sind scheiße, sie sind schwer zu testen und schwer zu verwenden.

Wenn Ihre Komponenten klein sind und den oben genannten Dogmen folgen, sollten sie leicht zu verkabeln und mit anderen Dingen zu spielen sein.Die oben genannten Punkte gelten natürlich auch für das Spring-Framework selbst.

PS

Hören Sie nicht auf die oben genannten Punkte, sie reden darüber, wie man was auch immer macht.Es ist wichtiger zu lernen, wie man denkt, als wie man etwas tut.Menschen können denken, etwas zu wiederholen ist nicht klug, Denken schon.

Der Frühling hat mir eigentlich ganz gut gefallen.Es war eine frische Brise in Ihren durchschnittlichen J2EE Java Beans.

Ich empfehle die Implementierung des von Spring bereitgestellten Beispiels:

http://static.springframework.org/docs/Spring-MVC-step-by-step/

Außerdem habe ich mich für die Vollversion entschieden und Hibernate zu meiner Spring-Anwendung hinzugefügt ;), da Spring hervorragende Unterstützung für Hibernate bietet ...:) :)

Ich habe jedoch ein Verbot, das ich auf die harte Tour gelernt habe (Produkt in Produktion) ...Wenn Sie nur die Controller-Schnittstelle implementieren und ein ModelAndView-Objekt mit einigen Daten zurückgeben, die mit der Schnittstelle bereitgestellt werden, sammelt Spring diese Ressourcen garbadge und versucht, diese Daten zwischenzuspeichern.Seien Sie also vorsichtig, wenn Sie große Datenmengen in diese ModelAndView-Objekte einfügen, da diese Ihren Serverspeicher so lange belasten, wie der Server in der Luft ist, sobald diese Seite angezeigt wurde ...

Fangen Sie hier an – ich glaube tatsächlich, dass es zu den besten Software-Entwicklerbüchern gehört, die ich je gelesen habe.
Expert Spring MVC und Web Flow

Lernen Sie die neue annotationsbasierte Konfiguration für MVC-Klassen kennen.Dies ist Teil von Spring 2.5.Durch die Verwendung von Annotation-basierten Klassen wird das Schreiben von Unit-Tests um einiges einfacher.Außerdem ist es eine gute Sache, die XML-Menge reduzieren zu können.

Oh ja, Unit-Tests – wenn Sie Spring verwenden, sollten Sie BESSER Unit-Tests durchführen.:) Schreiben Sie Unit-Tests für alle Ihre Web- und Service-Layer-Klassen.

Informieren Sie sich über Domain Driven Design.Die Tatsache, dass Sie Domänenobjektklassen auf allen Ebenen einer Spring-Anwendung verwenden können, bedeutet, dass Sie über ein SEHR leistungsfähiges Domänenmodell verfügen.Nutzen Sie es.

Wenn Sie jedoch Ihre Domänenobjektklassen zum Ausfüllen von Formularen verwenden, sollten Sie die aktuellen Sicherheitsbedenken im Zusammenhang mit dem Spring Framework berücksichtigen. Eine Diskussion auf der Serverseite verrät den Weg, die Lücke in den Kommentaren zu schließen.

Ein guter Einstieg ist die Konzentration auf das „Springframework“.Das Spring-Portfolio ist zu einer großen Anzahl von Projekten rund um verschiedene Aspekte der Unternehmenssoftware angewachsen.Bleiben Sie am Anfang beim Kern und versuchen Sie, die Konzepte zu verstehen. Herunterladen Schauen Sie sich die neuesten Binärdateien an und sehen Sie sich das Petclinic-Beispiel von Spring an, sobald Sie mit dem Kern vertraut sind.Es gibt einen recht guten Überblick über die verschiedenen Projekte, die SpringSource anbietet.

Obwohl die Dokumentation sehr gut ist, Ich würde ein Buch empfehlen nachdem Sie die Konzepte des Kerns verstanden haben.Was ich an der Dokumentation als problematisch empfunden habe, ist, dass sie nicht ausführlich ist und Ihnen nicht alle benötigten Details liefern kann.

„...Welche Technologie haben Sie gleich genutzt:AOP, komplexer Ruhezustand …“ – Ich würde sagen, eine bessere Frage wäre, zu fragen, was die Leute nicht sofort verwendet haben.Ich würde die von Ihnen genannten Beispiele zu dieser Liste hinzufügen.

Spring MVC- und JDBC-Vorlagen wären meine Einstiegsempfehlungen.Allein damit kann man sehr weit kommen.

Meine Empfehlung wäre, den Architekturempfehlungen von Spring genau zu folgen.Nutzen Sie ihre Layering-Ideen.Stellen Sie sicher, dass Ihre Webebene vollständig vom Rest trennbar ist.Dies erreichen Sie, indem Sie die Webschicht nur über die Serviceschicht mit dem Back-End interagieren lassen.

Wenn Sie diese Serviceschicht wiederverwenden möchten, empfiehlt es sich, sie mithilfe der „Contract First“-Webdienste von Spring verfügbar zu machen.Wenn Sie mit den XML-Nachrichten beginnen, die Sie hin und her übergeben, können Ihr Client und Server vollständig entkoppelt werden.

Die IDE mit der besten Spring-Unterstützung ist IntelliJ.Es lohnt sich, ein paar Dollar auszugeben.

Obwohl es Jahre her ist, dass ich Spring verwendet habe, und ich nicht sagen kann, dass ich ein Fan davon bin, weiß ich, dass das App Fuse-Tool (https://java.net/projects/appfuse/) war hilfreich, um Leuten beim Bootstrap zu helfen und alle Artefakte zu generieren, die sie benötigen, um loszulegen.

Im Frühling geht es auch stark um Unit-Tests und damit um die Testbarkeit Ihrer Klassen.Das bedeutet im Grunde, über Modularisierung, Trennung von Belangen, Referenzierung einer Klasse über Schnittstellen usw. nachzudenken.

Wenn Sie sich einfach ein wenig damit beschäftigen und sehen möchten, ob es Ihnen gefällt, empfehle ich, mit der DAO-Ebene zu beginnen und die JDBC- und/oder Hibernate-Unterstützung von Spring zu verwenden.Dadurch werden Sie mit vielen Kernkonzepten vertraut gemacht, allerdings auf eine Weise, die Sie leicht vom Rest Ihrer App isolieren können.Dies ist der Weg, den ich eingeschlagen habe, und es war eine gute Aufwärmphase, bevor ich mit der Entwicklung einer vollständigen Anwendung mit Spring begann.

Mit der Veröffentlichung von Spring 2.5 und 3.0 denke ich, dass eine der wichtigsten Best Practices, die man jetzt nutzen sollte, die Spring-Annotationen sind.Anmerkungen für Controller, Dienste und Repositorys können Ihnen eine Menge Zeit sparen, ermöglichen Ihnen, sich auf die Geschäftslogik Ihrer App zu konzentrieren, und können möglicherweise alle Ihre Objekte in einfache alte Java-Objekte (POJOs) umwandeln.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top