MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Verwendung von Spring Boot mit MongoDB

Spring Boot ist ein Java-basiertes Open-Source-Framework zum Erstellen von Mikrodiensten, das es Entwicklern ermöglicht, Dienste unabhängig voneinander bereitzustellen und zu entwickeln. Jeder ausgeführte Dienst hat seinen eigenen Prozess, wodurch das leichtgewichtige Modell erreicht wird, das Geschäftsanwendungen unterstützt. Microservices haben mehrere Vorteile:einfache Skalierbarkeit, minimale Konfiguration, geringere Produktionszeit, Container-Kompatibilität und einfache Entwicklung.

Spring Boot bietet Entwicklern eine gute Plattform, um eigenständige und produktionsbereite Spring-Anwendungen zu erstellen, die Sie einfach ausführen können. Daher kann man mit minimalen Konfigurationen beginnen, ohne eine komplette Federkonfiguration einrichten zu müssen.

Beispielsweise ist die Handhabung des Abhängigkeitsmanagements für große Projekte komplex; Spring Boot löst diese Schwierigkeit, indem es eine Reihe von Abhängigkeiten für die Bequemlichkeit des Entwicklers bereitstellt. Die Spring Boot-Anwendung scannt alle Beans und Paketdeklarationen, wenn die Anwendung initialisiert wird; Außerdem umfasst die Anmerkung der Spring Boot-Anwendung einen Komponentenscan, eine automatische Konfiguration und eine Spring Boot-Konfiguration.

Funktionen von Spring Boot

Nachfolgend sind einige der Standardfunktionen von Spring-Boot aufgeführt:

  1. Wenn möglich, werden die Bibliotheken von Spring und Drittanbietern automatisch konfiguriert
  2. Es bietet rechthaberische „Starter“-Abhängigkeiten, um Ihre Build-Konfiguration zu vereinfachen
  3. Es erfordert keine XML-Konfiguration und keine Codegenerierung
  4. Darüber hinaus bietet es produktionsbereite Funktionen wie externe Konfigurationsmetriken und Zustandsprüfungen
  5. Es hat einen eingebetteten Tomcat, Undertow direkt oder Jetty; Daher müssen keine WAR-Dateien bereitgestellt werden
  6. Außerdem erstellt es eigenständige Spring-Anwendungen

Vorteile von Spring Boot für Entwickler

  1. Erhöht die Produktivität
  2. Erleichtert die Entwicklung und das Verständnis von Federanwendungen
  3. Es reduziert die Zeitentwicklung.

 Ziele des Spring Boot

Es wurde entwickelt, um:

  1. Entwickeln Sie produktionsreife Federanwendungen auf einfachere Weise
  2. Vermeiden Sie eine komplexe XML-Konfiguration in Spring
  3. Reduzieren Sie die Entwicklungszeit und führen Sie die Anwendung unabhängig aus
  4. Einen unkomplizierteren Einstieg in die Anwendung bieten.

Der Spring Boot wird aufgrund der Funktionen und Vorteile bevorzugt, die er bietet, wie zum Beispiel:

  1. Bereitstellung einer leistungsstarken Stapelverarbeitung und Verwaltung von REST-Endpunkten
  2. Bereitstellung einer flexibleren Möglichkeit zur Konfiguration von Datentransaktionen, Java Beans j und XML-Konfigurationen.
  3. Bietet Anmerkungen basierend auf Federanwendungen
  4. Vereinfacht das Abhängigkeitsmanagement, es enthält einen eingebetteten Servlet-Container
  5. Es sind keine manuellen Konfigurationen erforderlich, da alles in Spring Boot automatisch konfiguriert wird

MongoDB ist ein quellenverfügbares, plattformübergreifendes, dokumentenorientiertes Datenbankprogramm. Es ist eine Dokumentendatenbank, die eine hohe Skalierbarkeit und Flexibilität von Programmen bietet. Außerdem bietet es Benutzern schnelles Abfragen und Indexieren, was langfristig seine Leistung steigert.

MongoDB ist als NoSQL-Datenbankprogramm klassifiziert und verwendet JSON-ähnliche Dokumente mit optionalen und flexiblen Schemas. Diese Datenbank wurde von MongoDB Inc. entwickelt, einem in den USA ansässigen Unternehmen, das die quellenverfügbare Datenbank entwickelt und kommerziellen Support dafür bereitstellt. MongoDB ist unter der Server-Side Public License (SSPL) lizenziert.

Die Funktionen von MongoDB wurden beispielsweise aufgrund der laufenden Versionsentwicklung kontinuierlich verbessert;

DATUM VERSION MERKMAL
Dezember 2009 1.2 Gespeicherte JavaScript-Funktionen
Schnellere Indexerstellung
Mehr Indizes pro Sammlung
Konfigurierbare Synchronisierungszeit
Mehrere kleinere Funktionen und Korrekturen
August 2010 1.6 Zuordnen/reduzieren
Replikatsätze
Produktionsbereites Sharding
Unterstützung für IPv6
März 2013 2.4 gehashter Index
Zur V8-JavaScript-Engine wechseln
Erweiterte Geodatenunterstützung
Erweiterte Textsuche
Sicherheitsverbesserungen
8. April 2014 2.6 Verbesserungen der Abfrage-Engine
Aggregationsverbesserungen
Sicherheitsverbesserungen
Neues Protokoll für Schreiboperationen
Textsuchintegration
3. März 2015 3.0 Verbesserte Erklärungsfunktion
Plug-fähige Speicher-Engine-API
MongoDB-Ops-Manager
Wired Tiger Speicher-Engine-Unterstützung
SCRAM-SHA-1-Authentifizierung
8. Dezember 2015 3.2 Verbesserungen der Replikationswahl
Dokumentvalidierungen
Wired Tiger Speicher-Engine standardmäßig
Server als Replikatsätze konfigurieren
Von V8 zu Spider Monkey verschoben
Dokumentvalidierungen
Bedenken lesen
29. November 2016 3.4 Sortierung, linearisierbare Lesebedenken und Ansichten
Juni 2018 4.0 Erweiterte Transaktionen
13. Juli 2021 5.0 Clientseitige Verschlüsselung auf Feldebene
Zukunftssichere versionierte API
Zeitreihenunterstützung
Live-Resharding beinhaltet das Ändern von Objekt-Shard-Zuordnungen und das Verschieben des Objekts auf ein anderes Shard.

Mit Hilfe von Spring Boot können schnell und einfach eigenständige Apps erstellt werden (wie wir später sehen werden). Aufgrund ihrer Benutzerfreundlichkeit hat sich MongoDB zur beliebtesten NoSQL-Datenbank entwickelt. Durch die Kombination von Spring Boot und MongoDB können schnell, sicher, zuverlässig und mit minimaler Entwicklungszeit erstellt werden.

Dieser Artikel zeigt, wie Sie die Spring Data MongoDB-API verwenden, um Spring Boot mit MongoDB zu kombinieren.

So verwenden Sie Spring Boot mit MongoDB

Spring Boot ist ein Microservice-basiertes Web-Framework, das automatisch konfiguriert wird und integrierte Sicherheits- und Datenbankzugriffsfunktionen bereitstellen kann. So kann Spring Boot ohne Konfigurationsänderungen schnell eine eigenständige Anwendung erstellen. Andererseits ist MongoDB die beliebteste NoSQL-Datenbank, da sie Daten einfach speichern und abrufen kann. Die Kombination von Spring Boot und MongoDB führt zu sicheren, schnellen und zuverlässigen Anwendungen mit minimaler Entwicklungszeit.

Spring Boot erstellt schnell produktionsbereite Anwendungen. MongoDB und Spring Boot interagieren über die Mongo-Vorlagenklasse und die Mongo-Repository-Schnittstelle.

  • Mongo-Vorlage — Es implementiert eine Reihe von gebrauchsfertigen APIs. Eine gute Wahl für Vorgänge wie unter anderem Aktualisierungsaggregationen; Darüber hinaus bietet Mongo Template eine verfeinerte Kontrolle über benutzerdefinierte Abfragen.
  • Mongo-Repository wird für grundlegende Abfragen verwendet, die viele Dokumentfelder wie das Anzeigen von Dokumenten und die Datenerstellung betreffen.

Die Spring Boot MongoDB-Konfiguration mit beiden Ansätzen erfordert nur wenige Codezeilen.

Spring Boot ist ein Anwendungsframework für Java-Webanwendungen, das auf dem MVC-Framework (Model-View-Controller) basiert. Seine Abhängigkeitsinjektion verarbeitet Funktionen wie Datenbanksicherheit, Zugriff und Initialisierung, sodass sich Entwickler auf die Geschäftslogik konzentrieren können. Außerdem baut es auf dem Spring-Framework auf, hauptsächlich für REST-APIs, und erfordert nur sehr wenige Konfigurationen. Es hat vier Schichten:

Die Präsentationsebene — Der Ansichtsteil des MVC-Frameworks behandelt das Front-End.

Die Geschäftsschicht ist der Controller, in dem die gesamte Geschäftslogik und die Validierungen durchgeführt werden.

Persistenzschicht — Diese Schicht übersetzt die Geschäftsobjekte in Datenbankobjekte.

Datenbankschicht — Die eigentlichen CRUD-Operationen (Create, Read, Update, Delete).

MongoDB ist eine schnelle Datenbank, die in der Lage ist, riesige Mengen an organisierten und unstrukturierten Daten zu verarbeiten, was sie ideal für Webanwendungen macht. MongoDB speichert Daten als binäre JSON-Objekte, was den Datenabruf vereinfacht. Das Spring-Framework enthält robuste Konnektoren, die effiziente Datenbankoperationen mit MongoDB ermöglichen.

In diesem Spring Boot mit MongoDB-Beispieltutorial beschäftigen wir uns ausschließlich mit den Ebenen Persistenz und Datenbank. Wir werden unsere Software über eine integrierte Entwicklungsumgebung (IDE) ausführen, um einen starken Schwerpunkt auf CRUD-Operationen zu legen. Um Spring Boot und MongoDB zu verbinden, fügen wir Spring Boot MongoDB-Konfigurationen hinzu.

Was wir in diesem Beispiel konstruieren werden

Lassen Sie uns die Einkaufsliste eines fiktiven Benutzers entwickeln. Wir führen die folgenden Verfahren durch:

  1. In unserer Spring-Anwendung definieren wir ein Plain Old Java Object (POJO) für Lebensmittel mit einer ID, einem Namen, einer Menge und einer Kategorie.
  2. Danach führen wir Erstellungs-, Lese-, Aktualisierungs- und Löschaktionen (CRUD) über die öffentliche Schnittstelle von MongoRepository durch.
  3. Schließlich demonstrieren wir eine andere Methode zum Ändern von Dokumenten durch die Verwendung der MongoTemplate-Klasse.

Voraussetzungen

Wir benötigen:

  • Cluster MongoDB Atlas (wenn Sie noch kein Konto haben, melden Sie sich kostenlos an, bevor Sie mit der nächsten Phase fortfahren).
  • Frühlings-Initialisierung
  • Java 1.8
  • Maven (installieren Sie Maven, indem Sie in Eclipse zu „Hilfe -> dann neue Software installieren“ gehen).
  • Eine integrierte Entwicklungsumgebung (IDE) importiert die wesentlichen Bibliotheken und Abhängigkeiten. Die Eclipse wird für diese Projektillustration verwendet.

Erstellen Sie zunächst mit Spring Initializr ein Spring Boot-Projekt mit den folgenden Einstellungen:

Wählen Sie Maven Project mit Java (8) als Programmiersprache und Spring Boot 2.5.3 als Version. Fügen Sie außerdem Spring Web- und Spring Data MongoDB-Abhängigkeiten hinzu. Spring Web integriert den Apache Tomcat-Server, Spring MVC und REST in Ihre Anwendung, um die Verwaltung aller gängigen Abhängigkeiten zu zentralisieren.

Wir nutzen die Spring Data MongoDB-Abhängigkeit, um in dieser Anwendung auf Daten aus unserem MongoDB-Atlas-Cluster zuzugreifen.

Geben Sie die Metadaten für das Projekt ein (wie oben dargestellt) und wählen Sie die JAR-Option. Spring Initializr verwaltet die Erstellung der pom.xml-Datei, während Maven die erforderlichen Abhängigkeiten über pom.xml herunterlädt.

Damit sind unsere Vorbereitungen für die Einstellungen abgeschlossen. Anschließend können wir auf die Schaltfläche Generieren klicken, um alle Dateien zu generieren, die zum Bootstrapping des Spring Boot-Projekts erforderlich sind. Danach beginnt der Browser automatisch mit dem Herunterladen einer ZIP-Datei.

Nach dem Download der ZIP-Datei entpacken Sie das Projekt. Öffnen Sie in der IDE das Projekt. Sie können ein Beispiel für eine ähnliche Projektstruktur sehen:

Wie wir sehen können, sind die von uns hinzugefügten Abhängigkeiten in der Datei pom.xml als artifactId:

enthalten

Es ist an der Zeit, das Unterverzeichnis src/main/java mit Inhalten zu füllen.

Implementierung des MongoDB-Modells

Die Klasse POJO oder GroceryItem dient hier als Modell.

Erstellen Sie ein Paket mit dem Namen „com.example.mdbspringboot.model“ und fügen Sie die Klasse GroceryItem.java darin ein.

Die Annotation @Document wird verwendet, um den Sammlungsnamen anzugeben, den das Modell verwenden wird. MongoDB erstellt die Sammlung, falls sie noch nicht vorhanden ist.

Wir können Getter und Setter für diesen Code generieren, indem wir die Option Eclipse Source -> Generate Getters and Setters verwenden. Verwenden Sie zunächst die Annotation @Id, um den Primärschlüssel _id des MongoDB-Dokuments anzugeben. MongoDB erstellt automatisch ein _id-Feld, wenn das Dokument erstellt wird, wenn wir nichts angeben.

Implementierung der MongoDB-API in Spring Boot

Das Repository ist der Ort, an dem die API implementiert ist. Es dient als Brücke zwischen der Datenbank und dem Modell und bietet Zugriff auf alle CRUD-Aktivitäten.

Erstellen Sie ein Paket mit dem Namen „com.example.mdbspringboot.repository“, um alle Repository-Dateien zu enthalten.

Wir erstellen eine öffentliche Schnittstelle für ItemRepository, die die MongoRepository-Schnittstelle erweitert.

Der erste Ansatz, findItemByName, erfordert ein Abfrageargument, das das Feld angibt, nach dem die Abfrage gefiltert werden soll. Dies wird mit der Annotation @Query angegeben. Die zweite Technik nutzt das Kategoriefeld, um alle Objekte abzurufen, die zu einer bestimmten Kategorie gehören. Wir wollen nur den Namen und die Nummer des Feldes, das in der Abfrageantwort projiziert wird; Daher setzen wir diese Felder auf 1. Wir wenden die Methode count() in ihrem aktuellen Zustand erneut an.

Beispiele für MongoDB mit Spring Boot CRUD

Wir sind jetzt bereit, unsere Spring-Anwendung zu entwickeln und die Methoden zu testen.

Um eine Verbindung zu MongoDB Atlas herzustellen, definieren wir die Verbindungszeichenfolge in der Datei „application.properties“ des Ordners „src/main/resources“. Auf die Verbindungszeichenfolge des Clusters kann in der Atlas-Benutzeroberfläche zugegriffen werden. Keine andere Datei ist erforderlich, um verbindungsbezogenen Code einzuschließen. Spring Boot verwaltet die Datenbankverbindung in unserem Auftrag.

Zusätzlich geben wir hier den Datenbanknamen an – MongoDB erstellt einen, wenn er nicht existiert.

Wir verwenden den Controller oder die Ansicht in diesem Spring Boot MongoDB-Beispiel nicht. Um die Ausgabe auf der Konsole anzuzeigen, verwenden wir stattdessen einen CommandLineRunner.

Erstellen Sie die Hauptklasse MdbSpringBootApplication.java im Stammpaket com.example.mdbspringboot:

Um die Spring-Anwendung auszuführen, verwendet unsere Klasse MdbSpringBootApplication die CommandLineRunner-Schnittstelle. ItemRepository ist Autowired, was bedeutet, dass Spring es automatisch erkennt. Die Annotation @SpringBootApplication wird verwendet, um den Anwendungskontext zu initialisieren. Außerdem aktivieren wir Mongo Repositories mit @EnableMongoRepositories. Die Struktur unseres Projekts sollte nun wie folgt aussehen:

Lassen Sie uns nun die Repository-Operationen zur Hauptklasse hinzufügen, die für CRUD-Operationen verwendet wird:

Erstellen Sie einen MongoDB-Spring-Boot-Vorgang

Wir werden die Speicherfunktion verwenden, um neue Dokumente zu erstellen. Wir können auf die save-Methode über die SimpleMongoRepository-Klasse zugreifen, die das MongoRepository-Protokoll verwendet. Unsere ItemRepository-Schnittstelle erweitert die ItemRepository-Schnittstelle von MongoRepository.

Die save-Methode akzeptiert einen Parameter vom Typ GroceryItem. Dieser Abschnitt erstellt fünf Lebensmittelartikel (Dokumente) und verwendet dann die Speicherfunktion, um sie in MongoDB zu speichern.

Spring Boot MongoDB-Lesevorgänge

Wir führen in dieser Anwendung vier verschiedene Lesevorgänge durch:

Verwenden Sie die Funktion findAll(), um alle Dokumente (Lebensmittelartikel) abzurufen.

Die Funktion findItemByName gibt ein einzelnes Element (Dokument) basierend auf seinem Namensfeld zurück.

Rufen Sie eine nach Kategorie geordnete Liste von Objekten ab.

Berechnen Sie die Gesamtzahl der Objekte.

Wir können eine Hilfsfunktion entwerfen, um das Ergebnis von Leseoperationen zu formatieren:

MongoDB Spring Boot-Aktualisierungsvorgang

Angenommen, wir ändern unsere Meinung und ziehen auf unserer Einkaufsliste den Begriff „Munchies“ dem „Snacks“ vor. Wir müssten alle Dokumente aktualisieren, die die Kategorie „Snacks“ enthalten. Um dies zu erreichen, müssen wir zuerst alle Papiere abrufen, die zur Kategorie „Snacks“ gehören, die Kategorie in „Knabbereien“ ändern und dann alle Dokumente speichern.

MongoDB Spring Boot-Löschvorgang

Anstatt eine Kategorie oder einen Artikel zu ändern, möchten wir vielleicht einen Lebensmittelartikel aus unserer Liste entfernen. Mithilfe der vordefinierten Funktion deleteById können wir den Lebensmittelartikel mit einer bestimmten ID entfernen.

Wir könnten die groceryItemRepo.deleteAll(); Funktion zum Entfernen aller Elemente. Durch das Entfernen aller Dokumente in der Sammlung werden diese nicht gelöscht.

Zusammenstellen der CRUD-Operationen

Anschließend implementieren wir den CommandLineRunner. Verwenden Sie zum Aufrufen der vorangehenden Methoden die Methode run():

Die system.out-Anweisungen werden verwendet, um das Erscheinungsbild der Ausgabe zu verbessern.

Wenn die Software ausgeführt wird, wird die folgende Ausgabe erwartet:

Aktualisierungsfunktion von MongoDB Spring Boot in Verbindung mit MongoTemplate

Darüber hinaus können wir die MongoTemplate-Klasse verwenden, um Aktualisierungsaktionen für ein bestimmtes Feld durchzuführen. Es enthält die Standardfunktionalität des Pakets org.springframework.data.mongodb.core.query. Wir müssen nicht viel Code schreiben, und die Aktualisierung kann mit einer einzigen Datenbankabfrage durchgeführt werden. MongoTemplate kann auch für kompliziertere Prozesse wie Aggregationen verwendet werden (nicht im Umfang dieses Leitfadens).

Ein benutzerdefiniertes Repository muss erstellt werden, bevor eine Klasse namens MongoTemplate verwendet werden kann. Hier wird die Abfrage für das Update erstellt.

Lassen Sie mich demonstrieren, wie man eine Methode konstruiert, die die Menge eines Supermarktartikels aktualisiert.

Erstellen Sie eine Schnittstelle CustomItemRepository:

Wir können die Schnittstelle mit so vielen Methoden wie nötig erweitern und Beispiele in der CustomItemRepositoryImpl-Klasse bereitstellen:

Spring importiert die Objektabhängigkeiten, da MongoTemplate @Autowired ist. Darüber hinaus ermöglicht die Annotation @Component Spring, die CustomItemRepository-Schnittstelle zu erkennen.

Der folgende Schritt besteht darin, diese Funktion innerhalb unserer Hauptklasse aufzurufen. Wie beim LebensmittelgeschäftItemRepo müssen wir unser customRepo wie folgt definieren:

Erstellen Sie dann in der Hauptklasse die folgende Methode, die unsere customRepo-Funktion aufruft:

Fügen Sie der run-Methode die folgende Methode hinzu, damit sie aufgerufen wird, wenn das Programm ausgeführt wird:

Sie sollten das folgende Ergebnis erhalten:

Wie bereits erwähnt, konnten wir die Änderung in einer einzigen Datenbanktransaktion anstelle von MongoRepository durchführen, was drei Aktionen erforderte:Suchen, Festlegen und Speichern. MongoTemplate enthält auch die Methode updateMulti(), mit der Sie mehrere Dokumente gleichzeitig aktualisieren können.

Schlussfolgerung

Wir haben in diesem Artikel gezeigt, wie einfach es ist, MongoDB in Spring Boot zu integrieren. Für die Verbindung mit MongoDB Atlas ist kein weiterer Code erforderlich. MongoDB Atlas bietet eine benutzerfreundliche Oberfläche zum Speichern und Zugreifen auf Daten von jedem Ort aus. Wenn Sie dieses einfache Tutorial abgeschlossen haben, glauben wir, dass Sie jetzt verstehen, wie Sie Spring Boot mit MongoDB verwenden. Wenn Sie auf Schwierigkeiten stoßen, wenden Sie sich über den Kommentarbereich an uns, um Hilfe zu erhalten. Danke fürs Lesen.