org.springframework

org.springframework

1. Einführung

Das Spring Framework bietet ein klares und aussagekräftiges Programmier- und Konfigurationsmodell für moderne Java-basierte Unternehmensanwendungen, die auf jeder Bereitstellungsplattform ausgeführt werden können.

Dieser Artikel behandelt den allgemeinen Überblick über das Spring-Framework und hauptsächlich dasorg.springframework-Paket, das Unterstützung für Abhängigkeitsinjektion, Transaktionsmanagement, Webanwendungen, Datenzugriff, Messaging, Testen und mehr bietet.

2. Eigenschaften

Spring Framework bietet eine umfassende Liste von Funktionen:

  • Spring MVC Web Application und RESTful Web Service Framework

  • Aspektorientierte Programmierung einschließlich des deklarativen Transaktionsmanagements von Spring

  • Abhängigkeitsspritze

  • Umkehrung der Kontrolle

und vieles mehr.

3. Maven-Abhängigkeiten

Wenn Sie Ihrem Maven-Projekt Spring hinzufügen möchten, finden Sie weitere Informationen dazuhere.

4. Frühlingsprojekte

Das Framework enthält eine Reihe verschiedener Module und Projekte. Von der Konfiguration über die Sicherheit, Web-Apps bis hin zu Big Data - unabhängig von den Infrastrukturanforderungen Ihrer Anwendung gibt es ein Spring Project, das Sie beim Erstellen unterstützt.

Fangen Sie klein an und verwenden Sie genau das, was Sie brauchen - Spring ist modular aufgebaut. Schauen wir uns hier einige dieser Projekte an.

4.1. Spring Web MVC

Das Framework vonWeb MVCbietet eine Model-View-Controller-Architektur, die aufDispatcherServlet basiert und alle HTTP-Anforderungen und -Antworten verarbeitet und die Anwendung lose koppelt.

Das Beste daran ist, dass Sie jedes Objekt als Befehls- oder Formularobjekt verwenden können - es ist nicht erforderlich, eine Framework-spezifische Schnittstelle oder Basisklasse zu implementieren. Die Datenbindung ist sehr flexibel: Beispielsweise werden Typinkongruenzen als Überprüfungsfehler behandelt, die von der Anwendung ausgewertet werden können, und nicht als Systemfehler.

Hier finden Sie die vollständigenguide.

4.2. Spring IO-Plattform

IO Platform definiert eine Reihe von Abhängigkeiten (beide Spring Framework-Abhängigkeiten als Bibliotheken von Drittanbietern), die in ein Java-Projekt aufgenommen werden können, damit Sie die erforderlichen Abhängigkeiten auswählen können, ohne sich um die Kompatibilität zwischen ihren Versionen sorgen zu müssen (da Spring IO dies garantiert ).

Die IO-Plattform ist für die Arbeit mit Java 7 und 8 zertifiziert.

Schauen Sie sichthe GitHub project an.

4.3. Spring Boot

Spring Boot macht es einfach, eigenständige Spring-basierte Anwendungen in Produktionsqualität zu erstellen, die Sie „einfach ausführen“ können. Es macht es sehr einfach, eine Spring-powered-Anwendung mit einem Minimum an Arbeit zu erstellen.

Eine mit ihr erstellte Anwendung kann mit einigen vernünftigen Standardeinstellungen weitgehend automatisch konfiguriert und darüber hinaus mit Metriken verbessert werden (wie viele Anforderungen, wie lange haben Anforderungen gedauert usw.).

Es besteht aus mehreren (optionalen) Modulen:

  1. CLI - Eine auf Groovy basierende Befehlszeilenschnittstelle zum Starten / Stoppen von vom Spring Boot erstellten Anwendungen.

  2. Boot Core - Die Basis für andere Module.

  3. Auto-configure - Modul zur automatischen Konfiguration einer Vielzahl von Spring-Projekten. Es erkennt die Verfügbarkeit bestimmter Frameworks (Spring Batch, Spring Data JPA, Hibernate, JDBC).

  4. Actuator - Wenn dieses Projekt hinzugefügt wird, werden bestimmte Unternehmensfunktionen (Sicherheit, Metriken, Standardfehlerseiten) für Ihre Anwendung aktiviert.

  5. Starters - Verschiedene Schnellstartprojekte, die als Abhängigkeit in Ihre Maven- oder Gradle-Builddatei aufgenommen werden sollen. Es wird die erforderlichen Abhängigkeiten für diesen Anwendungstyp haben. Derzeit gibt es Startprojekte für ein Webprojekt (auf Kater- und Mole-Basis), Spring Batch, Spring Data JPA, Spring Integration, Spring Security.

  6. Tools - Das Build-Tool Maven und Gradle sowie der benutzerdefinierte Spring Boot Loader (der in der einzelnen ausführbaren JAR / War verwendet wird) sind in diesem Projekt enthalten.

Wir können das Maven-Artefakthere finden undthe GitHub project betrachten.

4.4. Federdaten

Die Mission vonSpring Dataist es, ein bekanntes und konsistentes, Spring-basiertes Programmiermodell für den Datenzugriff bereitzustellen und dabei die besonderen Merkmale des zugrunde liegenden Datenspeichers beizubehalten.

Das Hauptziel dieses Projekts besteht darin, die Erstellung von Spring-basierten Anwendungen zu vereinfachen, die neue Datenzugriffstechnologien wie nicht relationale Datenbanken, kartenreduzierte Frameworks und cloudbasierte Datendienste verwenden und eine verbesserte Unterstützung für relationale Datenbanktechnologien bieten .

Dies ist ein Dachprojekt, das viele Teilprojekte enthält, die für eine bestimmte Datenbank spezifisch sind (wieJPA,MongoDB,Redis,Apache Solr,Gemfire, Apache Cassandra). Die Projekte werden in Zusammenarbeit mit vielen Unternehmen und Entwicklern entwickelt, die hinter diesen aufregenden Technologien stehen.

4.5. Frühling Sicherheit

Spring Security ist ein Framework, das sich darauf konzentriert, Java-Anwendungen sowohl Authentifizierung als auch Autorisierung bereitzustellen. Wie bei allen Spring-Projekten zeigt sich die wahre Stärke von Spring Security darin, wie einfach es erweitert werden kann, um kundenspezifische Anforderungen zu erfüllen. Es wird unterApache 2.0 license veröffentlicht, damit Sie es sicher in Ihren Projekten verwenden können.

Es ist auch leicht zu erlernen, bereitzustellen und zu verwalten. Es verfügt über einen dedizierten Sicherheits-Namespace, der Anweisungen für die gängigsten Vorgänge enthält, die vollständige Anwendungssicherheit in nur wenigen XML-Zeilen ermöglichen und Ihre Apps vor Angriffen wie Sitzungsfixierung, Clickjacking, Cross-Site-Request-Forgery usw. schützen.

Spring Security ist auch in viele andere Spring-Technologien integriert, darunter Spring Web Flow, Spring Web Services und Pivotal tc Server.

Schauen Sie sich dieFAQsder Spring-Sicherheit an, um einen tieferen Einblick zu erhalten, und die Abhängigkeitsseite vonMaven. Schauen Sie sich auch die Spring Security-Tutorials fürAuthentication,Registration undsetup Spring Security mit Maven. an

4.6. Frühlingssozial

Spring Social ist eine Erweiterung des Frameworks, mit der Anwendungen eine Verbindung zu Software-as-a-Service-Anbietern wie Twitter, Facebook und anderen authentifizierungsbasierten APIs vonOAuthherstellen können. Es bietet ein einsatzbereites OAuth-Authentifizierungsframework für webbasierte Anwendungen.

Eigenschaften:

  • Ein erweiterbares Dienstanbieter-Framework, das das Verbinden lokaler Benutzerkonten mit gehosteten Anbieterkonten erheblich vereinfacht.

  • Ein Verbindungscontroller, der den Autorisierungsfluss zwischen Ihrer Java / Spring-Webanwendung, einem Dienstanbieter und Ihren Benutzern verwaltet.

  • Java-Bindungen an beliebte Dienstanbieter-APIs wie Facebook, Twitter, LinkedIn, TripIt und GitHub.

  • Ein Anmeldecontroller, mit dem Benutzer sich bei Ihrer Anwendung authentifizieren können, indem sie sich über einen Dienstanbieter anmelden.

Erste Schritte:

Spring bietet einige Beispiele fürGitHub Projekte, damit Sie schnell beginnen können, undSpring Social reference ist auch mit einerquick start Seite praktisch.

4.7. Federschale

Spring Shell ist eine interaktive Shell, die mithilfe eines Spring-basierten Programmiermodells problemlos mit Befehlen erweitert werden kann.

Benutzer des Shell-Projekts können problemlos eine Shell-Anwendung mit vollem Funktionsumfang (aka Befehlszeile) erstellen, indem sie von der Spring Shell-JAR abhängig sind und ihre eigenen Befehle hinzufügen (die als Methoden für Spring Beans dienen). Das Erstellen einer Befehlszeilenanwendung kann nützlich sein (e.g., um mit der REST-API Ihres Projekts zu interagieren oder mit lokalen Dateiinhalten zu arbeiten.

The GitHub project finden Sie hier.

4.8. Spring Mobile

Spring Mobile ist eine Erweiterung des Frameworks undSpring Web MVC soll die Entwicklung mobiler Webanwendungen vereinfachen.

Spring Mobile ist ein Framework, das Funktionen zum Erkennen des Gerätetyps bereitstellt, der eine Anforderung an Ihre Spring-Website sendet, und alternative Ansichten basierend auf diesem Gerät bereitstellt. Wie bei allen Spring-Projekten zeigt sich die wahre Stärke von Spring Mobile darin, wie einfach es erweitert werden kann. Eigenschaften:

  • Eine Device Resolver-Abstraktion zur serverseitigen Erkennung von Mobil- und Tablet-Geräten

  • Website-Einstellungsverwaltung, mit der der Benutzer angeben kann, ob er eine "normale", "mobile" oder "Tablet" -Erfahrung bevorzugt

  • Ein Site-Switcher, der den Benutzer je nach Gerät auf die am besten geeignete Site (mobil, Tablet oder normal) umschalten kann und optional eine Site-Präferenz angibt

  • Geräteorientierte Ansichtsverwaltung zum Organisieren und Verwalten verschiedener Ansichten für bestimmte Geräte.

Mit diesensample application können Sie schnell loslegen.

Sie können auchdetect a device,website preference verarbeiten oder mobile Webinhalte mit Spring MVC bereitstellen.

4.9. Spring Batch

Spring Batch ist ein leichtes, umfassendes Framework, das die Entwicklung von Batch-Anwendungen ermöglicht, die für den täglichen Betrieb von Unternehmenssystemen von entscheidender Bedeutung sind.

Stapelanwendungen beziehen sich in diesem Zusammenhang auf automatisierte Offline-Systeme, die auf die Verarbeitung von Massendaten abzielen. Spring Batch automatisiert diese grundlegende Batch-Iteration und bietet die Möglichkeit, ähnliche Transaktionen als Gruppe zu verarbeiten, normalerweise in einer Offline-Umgebung ohne Benutzerinteraktion.

Spring Batch liest Daten mit einer konfigurierbaren Blockgröße aus einer Datenquelle, verarbeitet sie und schreibt sie schließlich in eine Ressource.

Die Datenquelle für den Reader können Flatfiles (Textdatei, XML-Datei, CSV-Datei…), relationale Datenbanken (MySQL…) und MongoDB sein. Ebenso kann ein Autor Daten in flache Dateien, relationale Datenbanken, MongoDB, Mailer usw. schreiben.

Beginnen Sie schnell mitCreating a Batch Service und mit anderen Spring Batchresources.

5. Kernfederpakete

Schauen wir uns hier die wichtigsten Spring-Pakete an.

  • org.springframework.cache - Dieses Paket unterstützt Unterpakete und Klassen für die deklarative Cache-Verwaltung, das Einrichten des Open Source-Cache in der Bibliothek vonCaffeineund die Unterstützung von Klassen für den Open Source-CacheEhCache 2.x.

  • org.springframework.context - Dieses Paket baut auf dem Beans-Paket auf, um Unterstützung für Nachrichtenquellen und das Observer-Entwurfsmuster sowie die Möglichkeit für Anwendungsobjekte hinzuzufügen, Ressourcen mithilfe einer konsistenten API abzurufen.

  • org.springframework.core - Bietet grundlegende Klassen für die Ausnahmebehandlung und Versionserkennung sowie andere Kernhilfen, die für keinen Teil des Frameworks spezifisch sind.

  • org.springframework.expression - Dieses Paket enthält Kernabstraktionen hinterSpring Expression Language.

  • org.springframework.http - Dieses Paket enthält eine grundlegende Abstraktion über clientseitiges / serverseitiges HTTP.

  • org.springframework.jdbc - Die Klassen in diesem Paket vereinfachen die Verwendung von JDBC und verringern die Wahrscheinlichkeit häufiger Fehler.

  • org.springframework.jms - Dieses Paket enthält Integrationsklassen für JMS, die einen JMS-Zugriff im Spring-Stil ermöglichen.

  • org.springframework.jndi - Die Klassen in diesem Paket vereinfachen die Verwendung von JNDI, erleichtern den Zugriff auf in JNDI gespeicherte Konfigurationen und bieten nützliche Oberklassen für JNDI-Zugriffsklassen.

  • org.springframework.orm.hibernate5 - Paket zur Integration vonHibernate 5.x in Spring-Konzepte.

  • org.springframework.test.util - Allgemeine Dienstprogrammklassen zur Verwendung in Einheiten- und Integrationstests.

Diese Liste ist begrenzt und beschreibt nur die Kernpakete für Spring Framework. Sie finden die vollständige Listehere.

6. Fazit

In diesem kurzen Überblicksartikel haben wir uns verschiedene Projekte angesehen, die im Spring-Ökosystem vorhanden sind, und eine umfangreiche Sammlung von Maven-Abhängigkeiten, GitHub-Projekten und den umfassenden Funktionen, die jedes Projekt bietet, um unsere Web-Apps sicher, skalierbar und einfach zu machen Leben mit.

Wir haben uns auch die Kernpakete angesehen, mit denen wir uns auf einen logischen Aspekt unserer Apps konzentrieren können.