org.springframework

1. Einleitung

Das Spring Framework bietet ein sauberes 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 das org.springframework-Paket, das Unterstützung für Abhängigkeitsinjektion, Transaktionsmanagement, Webanwendungen, Datenzugriff, Messaging, Testen und mehr bietet.

2. Funktionen

Spring Framework bietet eine umfassende Liste von Funktionen:

  • Spring MVC-Webanwendung und RESTful-Webdienst-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 hier weitere Informationen dazu.

4. Frühlingsprojekte

Das Framework enthält eine Reihe verschiedener Module und Projekte. Von der Konfiguration über die Sicherheit bis hin zu Webanwendungen und Big Data - unabhängig von den Infrastrukturanforderungen Ihrer Anwendung gibt es ein Spring-Projekt, 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 Web MVC-Framework bietet eine Model-View-Controller-Architektur, die auf einem DispatcherServlet basiert, das 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 Validierungsfehler behandelt, die von der Anwendung ausgewertet werden können, nicht als Systemfehler.

Hier finden Sie die komplette Anleitung.

4.2. Spring IO-Plattform

Die IO-Plattform 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 sich das GitHub-Projekt an.

4.3. Frühlingsstiefel

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

Eine damit erstellte Anwendung kann mit einigen sinnvollen Standardeinstellungen weitgehend automatisch konfiguriert und daneben 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. Automatisch konfigurieren - Modul zum automatischen Konfigurieren einer Vielzahl von Spring-Projekten. Es erkennt die Verfügbarkeit bestimmter Frameworks (Spring Batch, Spring Data JPA, Ruhezustand, JDBC).
  4. Aktor - Wenn dieses Projekt hinzugefügt wird, werden bestimmte Unternehmensfunktionen (Sicherheit, Metriken, Standardfehlerseiten) für Ihre Anwendung aktiviert.
  5. Starter - 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 Starterprojekte für ein Webprojekt (Tomcat- und Jetty-basiert), Spring Batch, Spring Data JPA, Spring Integration und Spring Security.
  6. Tools - Das Build-Tool von 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-Artefakt hier finden und uns das GitHub-Projekt ansehen.

4.4. Federdaten

Die Mission von Spring Data ist 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, Frameworks zur Kartenreduzierung und Cloud-basierte Datendienste verwenden, und die Unterstützung relationaler Datenbanktechnologien zu verbessern .

Dies ist ein Dachprojekt, das viele Unterprojekte enthält, die für eine bestimmte Datenbank spezifisch sind (wie JPA, 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ühlingssicherheit

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

Es ist auch einfach zu erlernen, bereitzustellen und zu verwalten. Es verfügt über einen dedizierten Sicherheits-Namespace, der Anweisungen für die meisten gängigen Vorgänge bereitstellt, vollständige Anwendungssicherheit in nur wenigen XML-Zeilen ermöglicht und Ihre Apps vor Angriffen wie Sitzungsfixierung, Clickjacking, Fälschung von standortübergreifenden Anforderungen usw. schützt.

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

Schauen Sie sich die FAQs zur Sicherheit von Spring an, um einen tieferen Einblick und die Maven-Abhängigkeitsseite zu erhalten. Schauen Sie sich auch die Spring-Sicherheits-Tutorials zur Authentifizierung, Registrierung und Einrichtung von Spring Security mit Maven an .

4.6. Frühlingssozial

Spring Social ist eine Erweiterung des Frameworks, mit dem Anwendungen eine Verbindung zu Software-as-a-Service-Anbietern wie Twitter, Facebook und anderen auf OAuth-Authentifizierung basierenden APIs herstellen können. Es bietet ein gebrauchsfertiges OAuth-Authentifizierungsframework für webbasierte Anwendungen.

Eigenschaften:

  • Ein erweiterbares Dienstanbieter-Framework, das das Verbinden lokaler Benutzerkonten mit gehosteten Anbieterkonten erheblich vereinfacht.
  • Ein Connect-Controller, der den Autorisierungsfluss zwischen Ihrer Java / Spring-Webanwendung, einem Dienstanbieter und Ihren Benutzern verwaltet.
  • Java-Bindungen an beliebte APIs von Dienstanbietern wie Facebook, Twitter, LinkedIn, TripIt und GitHub.
  • Ein Anmelde-Controller, mit dem Benutzer sich bei Ihrer Anwendung authentifizieren können, indem sie sich über einen Dienstanbieter anmelden.

Erste Schritte Anleitungen:

  • Zugriff auf Facebook-Daten
  • Spring Social Twitter Setup
  • Sekundäres Facebook-Login

Spring bietet einige Beispiele für GitHub-Projekte, damit Sie schnell beginnen können, und Spring Social Reference ist auch mit einer Schnellstartseite 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 auf einfache Weise eine voll funktionsfähige Shell- Anwendung (auch als Befehlszeilenanwendung bezeichnet) 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, z. B. um mit der REST-API Ihres Projekts zu interagieren oder um mit lokalen Dateiinhalten zu arbeiten.

Das GitHub-Projekt finden Sie hier.

4.8. Spring Mobile

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

Spring Mobile ist ein Framework, das Funktionen zum Erkennen des Gerätetyps bietet, der eine Anforderung an Ihre Spring-Website sendet, und alternative Ansichten basierend auf diesem Gerät bereitstellt. Wie bei allen Spring-Projekten liegt 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
  • Site-Präferenzverwaltung, 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, entweder mobil, Tablet oder normal, umschalten kann und optional eine Site-Präferenz angibt
  • Gerätebewusste Ansichtsverwaltung zum Organisieren und Verwalten verschiedener Ansichten für bestimmte Geräte.

Mit dieser Beispielanwendung können Sie schnell loslegen.

Mit Spring MVC können Sie auch ein Gerät erkennen, eine Website-Präferenz bearbeiten oder mobile Webinhalte 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 ausgerichtet sind. Spring Batch automatisiert diese grundlegende Batch-Iteration und bietet die Möglichkeit, ähnliche Transaktionen als Satz 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 Datenbank (MySQL…) und MongoDB sein.

Ebenso kann ein Autor Daten in flache Dateien, relationale Datenbanken, MongoDB, Mailer usw. schreiben.

Beginnen Sie schnell, indem Sie einen Batch-Service erstellen und andere Spring-Batch-Ressourcen verwenden.

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 Caffeine-Bibliothek und Support-Klassen für den Open Source-Cache EhCache 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 hinter der Spring 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 den 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 von Hibernate 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 das Spring Framework. Die vollständige Liste finden Sie hier.

6. Fazit

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

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