JavaRush /Java-Blog /Random-DE /Was Sie über Spring wissen müssen: Geschichte, Schlüsselm...

Was Sie über Spring wissen müssen: Geschichte, Schlüsselmodule, Vergleich mit Java EE

Veröffentlicht in der Gruppe Random-DE
Hallo! Derzeit ist die Webentwicklung die beliebteste Entwicklungsrichtung für einen Entwickler mit Java-Kenntnissen. Natürlich gibt es für dieses Fachgebiet eine Liste der zum Studium erforderlichen Technologien. Einer der wichtigsten ist der Frühling . Was Sie über Spring wissen müssen: Geschichte, Schlüsselmodule, Vergleich mit Java EE - 1Sie könnten argumentieren, dass Sie stattdessen Java EE lernen können . Das stimmt natürlich, aber inzwischen nutzt die überwiegende Mehrheit der neuen Projekte Spring , was es praktisch zur obligatorischen Standardtechnologie für einen Java-Webentwickler gemacht hat. Und wenn Sie mit den Bedürfnissen des Marktes Schritt halten wollen, müssen Sie ihn studieren. Heute möchte ich über Spring sprechen , nämlich Ihre Vision davon ein wenig erweitern: Sprechen Sie über die Entstehungsgeschichte, die wichtigsten Unterschiede zum Java EE- Stack und geben Sie einen kurzen Überblick über die Schlüsselkomponenten des Spring- Stacks. Lass uns anfangen! Was Sie über Spring wissen müssen: Geschichte, Schlüsselmodule, Vergleich mit Java EE - 2

1. Wie und wann der Frühling erschien und wie er sich im Laufe der Zeit entwickelte

Alles begann im Oktober 2002 , als Rod Johnson das Buch „Expert One-on-One J2EE Design and Development“ schrieb: Was Sie über Spring wissen müssen: Geschichte, Schlüsselmodule, Vergleich mit Java EE - 3In diesem von Wrox veröffentlichten Buch beschreibt der Autor den damaligen Stand der Enterprise-Java-Entwicklung und weist auf eine Reihe von Faktoren hin Mängel von Java EE und komponentenbasierten (Enterprise Java Bean)EJB- . Gleichzeitig schlägt Rod Johnson eine einfachere Lösung vor, die auf regulären Java-Klassen (POJO – Plain Old Java Objects) und Abhängigkeitsinjektion basiert. In dem Buch erklärt er, wie Sie eine hochwertige, skalierbare Online-Reservierungsanwendung erstellen können, ohne EJB zu verwenden. Diese. Er zeigte anschaulich, wie man die Komplexität der Anwendungsentwicklung verringert und es ermöglicht, mit einfachen JavaBeans alles zu erreichen, was bisher nur mit EJBs möglich war. Der Anwendungsbereich von Spring beschränkt sich jedoch nicht auf die Entwicklung serverseitig laufender Softwarekomponenten. Jede Java-Anwendung kann die Vorteile des Frameworks in Bezug auf Einfachheit, Testbarkeit und lose Kopplung nutzen. Sein J2EE- Entwicklungsdesign wurde sofort ein Erfolg. Ein Großteil des im Buch kostenlos zur Verfügung gestellten Anwendungscodes war wiederverwendbar, und eine Reihe von Entwicklern begannen bald, ihn in ihren Projekten zu verwenden. Wrox hatte eine Webseite für das Buch mit dem Quellcode und Patches. Sie stellten auch ein Online-Forum für das Buch bereit. Im Februar 2003 überzeugten die Entwickler Jürgen Heller und Jann Karoff Rod Johnson, ein Open-Source-Projekt auf Basis des Codes des Frameworks zu erstellen. Von diesem Moment an begannen Rod, Jürgen und Yann ihre Zusammenarbeit, um etwas völlig Neues zu schaffen. Tatsächlich war es Yann Karoff, der den Namen „Spring“ für das neue Framework erfand. Gemeint ist damit, dass der Frühling wie der Frühling ist: ein Neuanfang nach dem „Winter“ des traditionellen J2EE.
  • Im Juni 2003 wurde Spring 0.9 unter der Apache 2.0-Lizenz veröffentlicht.
  • Spring 1.0 wurde im März 2004 veröffentlicht. Interessanterweise wurde die Vorgängerversion 0.9 bereits vor der Veröffentlichung von Spring 1.0 sehr gut angenommen und weit verbreitet.
  • Im August 2004 gründeten Rod Johnson, Jürgen Heller, Keith Donald und Colin Sampaleanu gemeinsam interface21 , ein Spring-Beratungs-, Schulungs- und Supportunternehmen.
  • Oktober 2006: Spring 2.0 wird veröffentlicht, was XML-Konfigurationsdateien vereinfacht.
  • Mit Spring 2.5, veröffentlicht im November 2007, wurden Anmerkungskonfigurationen eingeführt.
  • Spring 3.2, veröffentlicht im Dezember 2012, führte die Java-Konfiguration ein, unterstützte Java 7, Hibernate 4, Servlet 3.0 und erforderte außerdem mindestens Java 1.5.
  • Yann Karoff verließ das Team frühzeitig. Rod Johnson verließ das Frühjahrsteam im Jahr 2012. Jürgen Heller ist weiterhin aktives Mitglied des Spring-Entwicklungsteams.
  • Spring 4.0, veröffentlicht im Jahr 2014, fügte Unterstützung für Java 8 hinzu.
  • Ebenfalls im Jahr 2014 wurde Spring Boot der Welt vorgestellt.
  • Spring 5.0 wurde 2017 veröffentlicht. Wie Spring Boot 2.x, das Spring 5 unterstützt.
  • Tatsächlich ist unser Lieblings-Framework auf diese Weise zu dem geworden, was wir jetzt kennen.

2. Spring vs. Java EE

Lassen Sie uns einen kleinen Vergleich zweier wichtiger Java- Stacks für Webentwickler anstellen: Spring und Java EE. Was Sie über Spring wissen müssen: Geschichte, Schlüsselmodule, Vergleich mit Java EE - 4
Java EE
Vorteile Mängel
  • In Java EE geschriebene Anwendungen gelten als zuverlässiger, sicherer und skalierbarer
  • Java EE ist ein branchenweit anerkannter API-Standard
  • Basiert hauptsächlich auf Annotationen und CDI (Kontext- und Abhängigkeitsinjektion), genau wie Spring
  • Implementierung auf Basis von EJB-Containern und POJOs
  • Komplexe Anwendungen mit einer großen Anzahl von Transaktionen werden von JEE sehr gut bewältigt
  • Erfolgreich im Einsatz für eine skalierbare monolithische Anwendung
  • Java EE verfügt über eine eigene OOP-Sprache mit einem bestimmten Stil und einer bestimmten Syntax
  • Eine sehr komplexe Anwendungsentwicklungsumgebung, die für Anfänger (und manchmal auch für alte Leute) schwer zu verstehen ist.
  • Die endgültigen Kosten des Projekts, einschließlich Design, Bereitstellung und Anwendungsentwicklung, können unerschwinglich sein
Java EE, lizenziert von Oracle, ist für Organisationen und Unternehmen konzipiert, die eine umfassend anpassbare, verteilbare Umgebung für die Erstellung von Anwendungen für den Massenmarkt benötigen. Wie Spring enthält Java EE zusätzliche Bibliotheken für Datenbankzugriff (JDBC, JPA), Remote Engineering Invocation (RMI), Informationen (JMS), Webverwaltung, XML-Verarbeitung und charakterisiert Standard-APIs für Enterprise JavaBeans, Portlets, Servlets, Java Server Pages, usw. Was Sie über Spring wissen müssen: Geschichte, Schlüsselmodule, Vergleich mit Java EE - 5Das grundlegende Ziel von Java EE besteht darin, die Hauptprobleme zu lösen, mit denen Entwickler beim Erstellen aktueller Anwendungen mithilfe verschiedener APIs konfrontiert sind. Gleichzeitig weist die Entwicklung in Java EE einen hohen Komplexitätsgrad auf, der die Messlatte nicht nur für Einsteiger unerschwinglich hoch legt. Und für erfahrene Spezialisten kann es schwierig sein, bereits geschriebene Funktionen zu verstehen, sodass die Entwicklung in Java EE länger dauert und dementsprechend teurer ist. Über Java EE können wir kurz und knapp sagen: Komplex, aber flexibel. Lassen Sie uns nun ein wenig über den Frühling sprechen . Was Sie über Spring wissen müssen: Geschichte, Schlüsselmodule, Vergleich mit Java EE - 6
Frühling
Vorteile Mängel
  • Ermöglicht die effektive Organisation von Objektinteraktionen
  • Einfacher als Java EE
  • Implementiert auf Basis von IOC und AOP , was eine lose Kopplung von Anwendungen gewährleistet
  • Funktioniert basierend auf XML, Groovy oder Annotation-Konfiguration
  • Ermöglicht die Verwendung einfacher alter Java-Objekte – POJOs. Entwickler benötigen keinen Unternehmenscontainer wie einen Anwendungsserver
  • Bietet Java-Entwicklern ein hohes Maß an Modularität
  • Stellt Implementierungen von Java EE-Bibliotheken bereit, allerdings auf eine eigene Art und Weise, wodurch deren Verwendung wesentlich einfacher wird
  • Open-Source-Lizenz
  • Spring Boot vereinfacht die Ersteinrichtung der Anwendung erheblich
  • Spring-Anwendungscode ist im Allgemeinen einfach zu testen
  • Der Frühling lässt sich relativ schwer entwickeln, da ihm ein klarer Fokus fehlt
  • Für einen neuen Java-Entwickler kann das Erlernen des Spring-Frameworks eine Herausforderung sein (aber immer noch einfacher als Java EE).
  • Spring ist langsamer als Java EE
Spring ist ein Open-Source-Java-Framework für große Unternehmen. Das Spring-Framework zielt darauf ab, die einfachste Implementierung von J2EE-Ideen zu ermöglichen und hervorragende Programmierpraktiken zu nutzen, indem es die Fähigkeiten des POJO-basierten Programmiermodells erweitert. Diese. Java EE ist eher ein offizieller Standard, während Spring eher ein Framework ist, das diesen Standard auf seine eigene Art umsetzt.

Vergleichsergebnisse

Nach meinem Verständnis sind Java EE und Spring wie JDBC und Hibernate, wobei JDBC eine schnellere Technologie ist, aber gleichzeitig viel unnötigen Code enthält. Und Hibernate verwendet bereits JDBC, vereinfacht und reduziert jedoch gleichzeitig die Entwicklung erheblich (wenn auch mit einigen Einschränkungen). Es ist unmöglich, mit Sicherheit zu sagen, welches davon besser ist. Das erinnert auch ein wenig an die Frage: Was ist besser – ArrayList oder LinkedList. Denn die Antwort wird – je nach Situation – dieselbe sein. Jeder von ihnen hat seine eigenen Stärken und Schwächen, und Sie müssen eine sorgfältige Auswahl treffen, Ihre Situation abwägen und verstehen, welcher von ihnen jetzt den größten Nutzen bringt. Was Sie über Spring wissen müssen: Geschichte, Schlüsselmodule, Vergleich mit Java EE - 7

3. Federkomponenten

Lassen Sie uns nun ein wenig über die Frameworks sprechen, aus denen Spring besteht.

Federrahmen

Es ist das Kernmodul, das ein umfassendes Programmier- und Konfigurationsmodell für moderne Java-basierte Unternehmensanwendungen bereitstellt – auf jeder Bereitstellungsplattform. Es enthält viele der Kerntechnologien von Spring :
  • Kern – Grundfunktionalität, die die Konzepte von IoC (Inversion of Control) und DI (Dependency Injection) implementiert ;
  • AOPAspect-Oriented Programming – aspektorientierte Programmierung mit dem Ziel, End-to-End-Logik zu implementieren;
  • MVC und WebFlux – Frameworks für Webinteraktion;
  • JDBC , ORM – Technologien zur Interaktion mit Datenbanken;
  • Test – Funktionalität zum transparenten, unkomplizierten Testen von Spring-Container-Daten;
  • SpEL – Spring Expression Language – Spring Expression Language;
  • usw.

Frühlingsstiefel

Vereinfacht die Erstellung von Spring -basierten Anwendungen durch Minimierung der anfänglichen Anwendungseinrichtung und automatische Konfiguration von Spring-Anwendungselementen. Beispiel für den Start von Spring Boot in 5 Minuten

Frühlingsdaten

Vereinfacht die Verwendung von Datenzugriffstechnologien sowie relationalen und nicht relationalen Datenbanken erheblich (entfernt sich wiederholenden Code und vereinfacht die Interaktion mit Daten). Dieser Artikel enthält ein gutes Tutorial zum Verbinden von Spring Data.

Frühlingswolke

Es wird in der Microservice-Architektur verwendet, um die Interaktion von Microservices untereinander zu vereinfachen und die Bereitstellung von Anwendungen auf Cloud-Plattformen wie AWS , Azure usw. zu automatisieren. Ein ausführliches Tutorial zu Spring Cloud finden Sie hier . Ich möchte Sie jedoch warnen, dass dieses Thema nicht einfach ist und sich an Spezialisten auf der höheren Ebene richtet.

Frühlingssicherheit

Bietet ein leistungsstarkes und anpassbares Tool zur Authentifizierung (Authentifizierung) und Zugriffskontrolle (Autorisierung) für eine Anwendung. Ein einfaches Beispiel für die Anbindung von Spring Security an Ihre Anwendung finden Sie in diesem Beitrag . Was Sie über Spring wissen müssen: Geschichte, Schlüsselmodule, Vergleich mit Java EE - 8

FrühlingsgraphQL

Dieses Modul bietet Unterstützung für Spring-Anwendungen, die auf GraphQL Java basieren. GraphQL ist eine Abfragesprache für APIs, die es Clients ermöglicht, einen begrenzten Satz benötigter Daten abzufragen, was wiederum die Erfassung von Daten in einer begrenzten Anzahl von Abfragen ermöglicht. Wenn Sie bereits mit JPA vertraut sind, sind Sie möglicherweise bereits auf EntityGraph mit einem ähnlichen (oder gleichen) Konzept gestoßen. Mehr über GraphQL können Sie hier lesen .

Frühlingssitzung

Dieser Teil des Spring-Frameworks stellt APIs und Implementierungen zum Verwalten von Benutzersitzungsinformationen bereit (Benutzersitzungsdaten werden in persistentem Speicher wie Redis , MongoDb , HazelCast usw. gespeichert). Ein Beispiel für die Verwendung von Spring Session finden Sie hier .

Frühlingsintegration

Dieses Modul soll die Nachrichtenübermittlung in Spring-basierten Anwendungen vereinfachen und die Integration mit externen Systemen durch deklarative Adapter unterstützen. Diese Adapter bieten eine höhere Abstraktionsebene als Springs Unterstützung für Remoting, Messaging und Planung. Ausführlicher Artikel .

Frühlingsruhe

Bietet einen umfangreichen Satz an Tools, die die REST-API-Entwicklung vereinfachen: Tools zum Weiterleiten von Anforderungen, zum Konvertieren von JSON/XML in Objekte der erforderlichen Typen usw. Ein Beispiel für einen RESTful-Dienst in Spring finden Sie in diesem Material .

Frühlings-Webfluss

Spring Web Flow basiert auf Spring MVC und ermöglicht die Implementierung von „Flows“ einer Webanwendung. Solche Abläufe umfassen eine Abfolge von Schritten, die einen Benutzer durch die Erledigung einer Geschäftsaufgabe führen. Sie umfassen mehrere HTTP-Anfragen, sind zustandsbehaftet, arbeiten mit Transaktionsdaten, sind wiederverwendbar und können dynamischer und dauerhafter Natur sein. Ein Beispiel für die Anbindung von Spring Web Flow finden Sie in dieser Anleitung auf Englisch .

Spring WebServices

Dieses Modul soll die Entwicklung vertragsbasierter SOAP-Dienste erleichtern, indem es Ihnen die Erstellung flexibler Webdienste mit einer von vielen Möglichkeiten zur Manipulation von XML-Nutzlasten ermöglicht. SOAP – Simple Object Access Protocol – Ein einfaches Protokoll für den Zugriff auf Objekte.

Frühling HATEOAS

Das Modul stellt einige APIs bereit, um die Erstellung von REST-Controllern zu erleichtern, die beim Arbeiten mit Spring und insbesondere Spring MVC dem HATEOAS-Prinzip folgen. HATEOAS – Hypermedia als Motor des Anwendungsstatus – Hypermedia als Motor des Anwendungsstatus. Sie können die Verwendung dieser Spring- Bibliothek hier sehen .

Frühlingscharge

Dieses Modul bietet Funktionen für die Stapeldatenverarbeitung (wenn Daten in großen Teilen – Stapeln) verarbeitet werden –, die für den täglichen Betrieb von Unternehmenssystemen unerlässlich sind. Spring Batch bietet wiederverwendbare Funktionen, die für die Verarbeitung großer Datensatzmengen erforderlich sind, einschließlich Protokollierung/Ablaufverfolgung, Transaktionsverwaltung, Auftragsverarbeitungsstatistiken, Auftragsneustart, Überspringen und Ressourcenverwaltung. Eine interessante Rezension zu Spring Batch finden Sie unter diesem Link .

Frühling AMQP

Das Modul wendet Kernkonzepte von Spring auf die Entwicklung AMQP-basierter Messaging-Lösungen an. Es stellt eine Vorlage als High-Level-Abstraktion zum Senden und Empfangen von Nachrichten bereit. Es bietet auch Unterstützung für nachrichtengesteuerte POJOs mit einem Listener-Container. AMQP – Advanced Message Queuing Protocol – Erweitertes Message Queuing-Protokoll. Das Projekt besteht aus zwei Teilen: spring-amqp ist die Basisabstraktion und spring-rabbit ist die Implementierung für RabbitMQ . Beispiel mit RabbitMQ-Verbindung mit Spring Was Sie über Spring wissen müssen: Geschichte, Schlüsselmodule, Vergleich mit Java EE - 9

Frühling für Apache Kafka

Dieses Projekt wendet Kernkonzepte von Spring auf die Entwicklung von Kafka- basierten Messaging-Lösungen an . Als High-Level-Abstraktion zum Versenden von Nachrichten wird eine Vorlage bereitgestellt. Es bietet außerdem Unterstützung für nachrichtengesteuerte POJOs mit den erforderlichen Anmerkungen und einem Listener-Container. Hier besteht eine deutliche Ähnlichkeit mit Spring AMQP, allerdings ist dieses Modul speziell für Kafka angepasst. Ein Beispiel für die Verbindung von Spring Kafka finden Sie hier .

Spring CredHub

Bietet clientseitige Unterstützung für das Speichern, Abrufen und Löschen von Anmeldeinformationen von einem CredHub-Server, der auf der Cloud Foundry- Plattform ausgeführt wird . CredHub – Bietet eine API zum sicheren Speichern, Erstellen, Abrufen und Löschen verschiedener Arten von Anmeldeinformationen. Spring CredHub bietet eine Java-Bindung für die CredHub-API und erleichtert so die Integration von Spring-Anwendungen in CredHub.

Frühling FLO

Es handelt sich um eine JavaScript-Bibliothek, die einen einfachen, in HTML5 einbettbaren visuellen Designer für Pipelines und einfache Diagramme zur Überwachung von Streaming- und Batch-Daten bietet. Eine Demo dieser Technologie finden Sie im Video unter dem Link .

Frühlings-LDAP

Diese Bibliothek vereinfacht LDAP-Vorgänge und basiert auf dem Spring JdbcTemplate. Das Framework ermöglicht das Suchen und Schließen von Kontext, das Anzeigen von Ergebnissen, das Kodieren/Dekodieren von Werten, Filtern und vieles mehr (basiert auf den gleichen Prinzipien wie Spring Jdbc). Eine Beispielimplementierung von Spring LDAP finden Sie hier .

Frühlingsroo

Dieses Modul stellt ein RAD-Tool bereit, mit dem Sie Ihre Spring-basierte Anwendung erstellen und verwalten können. Ziel ist es, die Produktivität von Java-Entwicklern zu verbessern. Es kann nicht die Geschäftslogik Ihrer Anwendung schreiben, aber es kann Konfigurations- und Infrastrukturaufgaben verwalten.

Frühlingsschale

Mit der Bibliothek können Sie auf einfache Weise eine voll funktionsfähige Shell-Anwendung (auch als Befehlszeilenanwendung bezeichnet) erstellen, indem Sie sich auf Spring-Shell-JARs verlassen und Ihre eigenen Befehle hinzufügen (die in Spring-Beans als Methoden vorliegen). Das Erstellen einer Befehlszeilenanwendung kann beispielsweise nützlich sein, um mit der REST-API Ihres Projekts zu interagieren oder mit lokalen Dateiinhalten zu arbeiten. Lesen Sie hier und hier mehr .

Frühlingszustandsmaschine

Dieses Modul ermöglicht Anwendungsentwicklern die Verwendung von Zustandsmaschinenkonzepten mit Spring-Anwendungen. Ein detailliertes Beispiel für die Nutzung dieser Funktionalität finden Sie hier und hier .

Frühlingsgewölbe

Spring Vault bietet bekannte Spring-Abstraktionen und clientseitige Unterstützung für den Zugriff, die Speicherung und das Widerrufen von Geheimnissen. Es bietet sowohl Low-Level- als auch High-Level-Abstraktionen für die Interaktion mit Vault und befreit den Benutzer von Infrastrukturproblemen. Beispiel einer Spring Vault-Implementierung Was Sie über Spring wissen müssen: Geschichte, Schlüsselmodule, Vergleich mit Java EE - 10„Muss ich das alles lernen?“ - fragst du erstaunt. Hab keine Angst! Das ist nicht so! Genauer gesagt, nicht ganz so. Dies war die vollständige Liste der im Frühjahr verfügbaren Technologien. Die Liste der Technologien, die ein Anfänger kennen muss, ist viel bescheidener:
  • Federkern
  • Frühlingsstiefel
  • Spring Web (MVC und REST)
  • Spring-Daten (Spring ORM, Spring JDBC, Spring JPA)
  • Frühlingstest
Es gibt auch andere Technologien, die häufig in Projekten zu finden sind, aber aufgrund ihrer Komplexität normalerweise eher von erfahreneren Entwicklern als von grünen Neulingen bearbeitet werden. Für Anfänger ist es jedoch auch hilfreich, zumindest ein allgemeines Verständnis für Folgendes zu haben:
  • Frühlingssicherheit
  • Frühlings-AOP
  • Frühlingswolke
Andere Technologien werden viel seltener verwendet, sodass Sie sie nur ernsthaft studieren müssen, um an einem bestimmten Projekt zu arbeiten. Eine vollständige Checkliste, was ein Java-Entwickler wissen sollte, finden Sie übrigens in meinem anderen Artikel. Das ist alles für mich heute, bis bald! Was Sie über Spring wissen müssen: Geschichte, Schlüsselmodule, Vergleich mit Java EE - 11
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION