MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come utilizzare Spring Boot con MongoDB

Spring Boot è un framework open source basato su Java per la creazione di microservizi, che consente agli sviluppatori di distribuire e sviluppare servizi in modo indipendente. Ogni servizio in esecuzione ha il suo processo, ottenendo così il modello leggero che supporta le applicazioni aziendali. I microservizi presentano numerosi vantaggi:scalabilità semplice, configurazione minima, tempi di produzione ridotti, compatibilità con i container e facile sviluppo.

Spring Boot fornisce agli sviluppatori una buona piattaforma per creare applicazioni Spring autonome e pronte per la produzione che puoi semplicemente eseguire; quindi, è possibile iniziare con configurazioni minime senza la necessità di un'intera configurazione della configurazione a molla.

Ad esempio, la gestione della gestione delle dipendenze è complessa per i grandi progetti; Spring Boot risolve quindi questa difficoltà fornendo una serie di dipendenze per comodità dello sviluppatore. L'applicazione Spring Boot esegue la scansione di tutti i bean e le dichiarazioni di pacchetto quando l'applicazione viene inizializzata; Inoltre, l'annotazione dell'applicazione Spring Boot include la scansione dei componenti, la configurazione automatica e la configurazione di Spring Boot.

Caratteristiche di Spring Boot

Di seguito sono elencate alcune delle caratteristiche standard dell'avvio a molla:

  1. Configura automaticamente le librerie Spring e di terze parti quando possibile
  2. Fornisce dipendenze "iniziative" supponenti per semplificare la configurazione della build
  3. Non ha requisiti per la configurazione XML e nessuna generazione di codice
  4. Inoltre, offre funzionalità pronte per la produzione come metriche di configurazione esternalizzate e controlli dello stato
  5. Ha un Tomcat incorporato, Undertow direttamente o Jetty; quindi, non è necessario distribuire file WAR
  6. Inoltre, crea applicazioni Spring autonome

Vantaggi di Spring Boot per gli sviluppatori

  1. Aumenta la produttività
  2. Semplifica lo sviluppo e la comprensione delle applicazioni primaverili
  3. Riduce lo sviluppo del tempo.

 Obiettivi dello stivale primaverile

È progettato per:

  1. Sviluppare applicazioni primaverili pronte per la produzione in un modo più semplice
  2. Evita configurazioni XML complesse in primavera
  3. Riduci i tempi di sviluppo ed esegui l'applicazione in modo indipendente
  4. Offri un modo più semplice per iniziare con l'applicazione.

Lo Spring Boot è più preferito per le caratteristiche e i vantaggi che offre come:

  1. Fornitura di una potente elaborazione batch e gestione degli endpoint REST
  2. Fornitura di un modo più flessibile per configurare le transazioni di dati, Java Beans j e le configurazioni XML.
  3. Offre annotazioni basate su applicazioni primaverili
  4. Semplifica la gestione delle dipendenze, include un contenitore servlet incorporato
  5. Non sono necessarie configurazioni manuali poiché tutto in Spring Boot è configurato automaticamente

MongoDB è un programma di database orientato ai documenti, multipiattaforma e disponibile all'origine. È un database di documenti che fornisce un'elevata scalabilità e flessibilità dei programmi. Inoltre, offre agli utenti query e indicizzazione veloci, che a lungo termine ne migliorano le prestazioni.

MongoDB è classificato come un programma di database NoSQL e utilizza documenti simili a JSON con schemi opzionali e flessibili. Questo database è stato sviluppato da MongoDB Inc., una società americana che sviluppa e fornisce supporto commerciale per il database disponibile all'origine. MongoDB è concesso in licenza in base alla Server-Side Public License (SSPL).

MongoDB ha avuto un miglioramento continuo delle sue funzionalità grazie, ad esempio, al continuo sviluppo della versione;

DATE VERSIONE NOTA SULLA FUNZIONALITÀ
Dicembre 2009 1.2 Funzioni JavaScript memorizzate
Creazione dell'indice più veloce
Più indici per raccolta
Tempo di sincronizzazione configurabile
Diverse funzionalità e correzioni minori
Agosto 2010 1.6 Mappa/riduci
Set di repliche
Sharding pronto per la produzione
Supporto per IPv6
Marzo 2013 2.4 Indice con hash
Passa al motore JavaScript V8
Supporto geospaziale avanzato
Ricerca di testo migliorata
Miglioramenti alla sicurezza
8 aprile 2014 2.6 Miglioramenti al motore di query
Miglioramenti all'aggregazione
Miglioramenti alla sicurezza
Nuovo protocollo per le operazioni di scrittura
Integrazione della ricerca di testo
3 marzo 2015 3.0 Funzionalità di spiegazione migliorata
API del motore di archiviazione plug-in
Gestione operazioni MongoDB
Supporto del motore di archiviazione Wired Tiger
Autenticazione SCRAM-SHA-1
8 dicembre 2015 3.2 Miglioramenti alle elezioni della replica
Convalide dei documenti
Motore di archiviazione Tiger cablato per impostazione predefinita
Configura i server come set di repliche
Spostato da V8 a Spider Monkey
Convalide dei documenti
Leggi preoccupazione
29 novembre 2016 3.4 Fascicolazione, dubbi e visualizzazioni di lettura linearizzabili
Giugno 2018 4.0 Transazioni avanzate
13 luglio 2021 5.0 Crittografia a livello di campo lato client
API con versione a prova di futuro
Supporto per le serie temporali
Il live resharding comporta la modifica delle mappature degli oggetti shard e lo spostamento dell'oggetto in un altro shard.

Con l'aiuto di Spring Boot (come vedremo più avanti) è possibile creare app autonome facili e veloci. Grazie alla sua facilità d'uso, MongoDB è diventato il database NoSQL più popolare. È possibile creare tempi di sviluppo rapidi, sicuri, affidabili e che richiedono tempi di sviluppo minimi combinando Spring Boot e MongoDB.

Questo articolo mostra come utilizzare l'API Spring Data MongoDB per combinare Spring Boot con MongoDB.

Come utilizzare Spring Boot con MongoDB

Spring Boot è un framework Web basato su microservizi che viene configurato automaticamente e può fornire funzionalità di sicurezza e accesso al database integrate. Pertanto, Spring Boot può creare rapidamente un'applicazione autonoma senza modifiche alla configurazione. D'altra parte, MongoDB è il database NoSQL più popolare poiché può facilmente archiviare e recuperare dati. La combinazione di Spring Boot e MongoDB produce applicazioni sicure, veloci e affidabili che richiedono tempi di sviluppo minimi.

Spring Boot crea applicazioni rapide pronte per la produzione. MongoDB e Spring Boot interagiscono utilizzando la classe Mongo Template e l'interfaccia Mongo Repository.

  • Modello Mongo — implementa una serie di API pronte per l'uso. Una buona scelta per operazioni come aggregazioni di aggiornamenti, tra le altre; inoltre, Mongo Template offre un controllo più raffinato sulle query personalizzate.
  • Repository Mongo viene utilizzato per query di base che coinvolgono molti campi di documenti come la visualizzazione di documenti e la creazione di dati.

La configurazione di Spring Boot MongoDB che utilizza entrambi gli approcci richiede solo poche righe di codice.

Spring Boot è un framework applicativo per applicazioni Web Java basato sul framework MVC (Model-View-Controller). La sua iniezione delle dipendenze gestisce funzionalità come la sicurezza del database, l'accesso e l'inizializzazione, consentendo agli sviluppatori di concentrarsi sulla logica aziendale. Inoltre, è basato sul framework Spring, principalmente per le API REST e richiede pochissime configurazioni. Ha quattro livelli:

Il livello di presentazione — La parte di visualizzazione del framework MVC gestisce il front-end.

Il livello aziendale è il controller in cui vengono eseguite tutte le logiche di business e le convalide.

Livello di persistenza — Questo livello converte gli oggetti business in oggetti database.

Livello database — Le effettive operazioni CRUD (Crea, Leggi, Aggiorna, Elimina).

MongoDB è un database veloce in grado di gestire enormi quantità di dati organizzati e non strutturati, il che lo rende ideale per le applicazioni web. MongoDB archivia i dati come oggetti JSON binari, il che semplifica il recupero dei dati. Il framework Spring include connettori robusti che consentono operazioni di database efficienti con MongoDB.

Ci occupiamo esclusivamente dei livelli di persistenza e database in questo tutorial di esempio di Spring Boot con MongoDB. Eseguiremo il nostro software attraverso un ambiente di sviluppo integrato (IDE) per mantenere una forte enfasi sulle operazioni CRUD. Per connettere Spring Boot e MongoDB, aggiungeremo le configurazioni Spring Boot MongoDB.

Cosa costruiremo in questo esempio

Sviluppiamo la lista della spesa di un utente fittizio. Effettueremo le seguenti procedure:

  1. Definiamo un articolo della spesa Plain Old Java Object (POJO) con un ID, un nome, una quantità e una categoria nella nostra applicazione Spring.
  2. In seguito, conduciamo azioni di creazione, lettura, aggiornamento ed eliminazione (CRUD) tramite l'interfaccia pubblica di MongoRepository.
  3. Infine, dimostriamo un metodo diverso per modificare i documenti utilizzando la classe MongoTemplate.

Prerequisiti

Richiediamo:

  • Cluster MongoDB Atlas (se non possiedi già un account, registrati gratuitamente prima di procedere alla fase successiva).
  • Inizializzazione primaverile
  • Java 1.8
  • Maven (installa Maven andando su "Aiuto -> quindi Installa nuovo software" in Eclipse).
  • Un ambiente di sviluppo integrato (IDE) importerà le librerie e le dipendenze essenziali. L'Eclipse verrà utilizzata per questa illustrazione del progetto.

Per iniziare, crea un progetto Spring Boot con le seguenti impostazioni utilizzando Spring Initializr:

Scegli Maven Project con Java (8) come linguaggio di programmazione e Spring Boot 2.5.3 come versione. Inoltre, aggiungi le dipendenze Spring Web e Spring Data MongoDB. Spring Web integra il server Apache Tomcat, Spring MVC e REST nella tua applicazione, per centralizzare la gestione di tutte le dipendenze comuni.

Sfruttiamo la dipendenza di Spring Data MongoDB per accedere ai dati dal nostro cluster MongoDB Atlas in questa applicazione.

Inserisci i metadati per il progetto (come illustrato sopra) e scegli l'opzione JAR. Spring Initializr gestisce la creazione del file pom.xml mentre Maven scarica le dipendenze richieste tramite pom.xml.

Questo completa i nostri preparativi per le impostazioni. Successivamente, possiamo fare clic sul pulsante Genera per generare tutti i file necessari per avviare il progetto Spring Boot. Successivamente, il browser inizierà a scaricare automaticamente un file ZIP.

Dopo aver scaricato il file ZIP, decomprimi il progetto. Dall'IDE, apri il progetto. Puoi vedere un esempio di una struttura di progetto simile a questa:

Come possiamo vedere, le dipendenze che abbiamo aggiunto sono incluse nel file pom.xml come artifactId:

È ora di popolare la sottodirectory src/main/java con i contenuti.

Implementazione del modello MongoDB

La classe POJO o GroceryItem funge da modello qui.

Crea un pacchetto denominato "com.example.mdbspringboot.model" e includi la classe GroceryItem.java al suo interno.

L'annotazione @Document viene utilizzata per specificare il nome della raccolta che verrà utilizzata dal modello. MongoDB creerà la raccolta se non esiste già.

Possiamo generare getter e setter per questo codice utilizzando l'opzione Eclipse Source -> Genera getter e setter. Innanzitutto, utilizza l'annotazione @Id per specificare la chiave primaria _id del documento MongoDB. MongoDB produrrà automaticamente un campo _id quando il documento viene creato se non specifichiamo nulla.

Implementazione dell'API MongoDB in Spring Boot

Il repository è il luogo in cui viene implementata l'API. Funge da ponte tra il database e il modello, fornendo accesso a tutte le attività CRUD.

Crea un pacchetto denominato "com.example.mdbspringboot.repository" per contenere tutti i file del repository.

Creiamo un'interfaccia pubblica per ItemRepository che estende l'interfaccia di MongoRepository.

Il primo approccio, findItemByName, richiede un argomento della query, che specifica il campo su cui filtrare la query. Questo viene specificato utilizzando l'annotazione @Query. La seconda tecnica sfrutta il campo categoria per recuperare tutti gli oggetti appartenenti a una specifica categoria. Vogliamo solo il nome e il numero del campo proiettato nella risposta alla query; pertanto, impostiamo quei campi su 1. Riapplicamo il metodo count() nel suo stato corrente.

Esempi di MongoDB con Spring Boot CRUD

Ora siamo pronti per sviluppare la nostra applicazione primaverile e testare i metodi.

Per collegarci a MongoDB Atlas, definiamo la stringa di connessione nel file application.properties della cartella src/main/resources. È possibile accedere alla stringa di connessione del cluster nell'interfaccia utente di Atlas. Nessun altro file è richiesto per includere il codice relativo alla connessione. Spring Boot gestisce la connessione al database per nostro conto.

Inoltre, specifichiamo qui il nome del database:MongoDB ne creerà uno se non esiste.

Non stiamo usando il controller o la vista in questo esempio di Spring Boot MongoDB. Invece, per visualizzare l'output sulla console, utilizzeremo CommandLineRunner.

Crea la classe principale MdbSpringBootApplication.java nel pacchetto radice com.example.mdbspringboot:

Per eseguire l'applicazione Spring, la nostra classe MdbSpringBootApplication utilizza l'interfaccia CommandLineRunner. ItemRepository è Autowired, il che significa che Spring lo scoprirà automaticamente. L'annotazione @SpringBootApplication viene utilizzata per inizializzare il contesto dell'applicazione. Inoltre, abilitiamo Mongo Repositories con @EnableMongoRepositories. La struttura del nostro progetto dovrebbe ora assomigliare alla seguente:

Ora aggiungiamo le operazioni del repository alla classe principale, che verrà utilizzata per le operazioni CRUD:

Crea un'operazione di avvio primaverile di MongoDB

Useremo la funzione di salvataggio per creare nuovi documenti. Possiamo accedere al metodo di salvataggio tramite la classe SimpleMongoRepository, che utilizza il protocollo MongoRepository. La nostra interfaccia ItemRepository estende l'interfaccia ItemRepository di MongoRepository.

Il metodo save accetterà un parametro del tipo GroceryItem. Questa sezione creerà cinque articoli della spesa (documenti), quindi utilizzerà la funzione di salvataggio per archiviarli in MongoDB.

Operazioni di lettura Spring Boot MongoDB

Stiamo conducendo quattro distinte operazioni di lettura in questa applicazione:

Utilizza la funzione findAll() per recuperare tutti i documenti (prodotti della spesa).

La funzione findItemByName restituisce un singolo elemento (documento) in base al campo del nome.

Recupera un elenco di oggetti organizzati per categoria.

Calcola il numero totale di oggetti.

Possiamo progettare una funzione di supporto per formattare il risultato delle operazioni di lettura:

Operazione di aggiornamento di MongoDB Spring Boot

Supponiamo di cambiare idea e preferiamo il termine "spuntini" a "spuntini" nella nostra lista della spesa. Avremmo bisogno di aggiornare tutti i documenti che contengono la categoria "snack". Per fare ciò, dobbiamo prima recuperare tutti i documenti appartenenti alla categoria "spuntini", cambiare la categoria in "spuntini" e quindi salvare tutti i documenti.

Operazione di eliminazione di MongoDB Spring Boot

Invece di modificare una categoria o un articolo, potremmo voler rimuovere un articolo della spesa dal nostro elenco. Utilizzando la funzione predefinita deleteById, possiamo rimuovere l'articolo della spesa con un ID specifico.

Potremmo usare il groceryItemRepo.deleteAll(); funzione per rimuovere tutti gli elementi. La rimozione di tutti i documenti nella raccolta non li cancellerà.

Assemblaggio delle operazioni CRUD

Successivamente, implementeremo CommandLineRunner. Per invocare i metodi precedenti, usa il metodo run():

Le istruzioni system.out vengono utilizzate per migliorare l'aspetto dell'output.

Quando il software viene eseguito, è previsto il seguente output:

Funzione di aggiornamento di MongoDB Spring Boot in combinazione con MongoTemplate

Inoltre, possiamo utilizzare la classe MongoTemplate per condurre azioni di aggiornamento su un campo specifico. Include la funzionalità predefinita del pacchetto org.springframework.data.mongodb.core.query. Non è necessario scrivere una grande quantità di codice e l'aggiornamento può essere eseguito con una singola query del database. MongoTemplate può essere utilizzato anche per processi più complicati come le aggregazioni (non nell'ambito di questa guida).

È necessario creare un repository personalizzato prima di utilizzare una classe denominata MongoTemplate. È qui che verrà creata la query per l'aggiornamento.

Permettetemi di dimostrare come costruire un metodo che aggiorni la quantità di un articolo del supermercato.

Costruisci un'interfaccia CustomItemRepository:

Possiamo estendere l'interfaccia con tutti i metodi necessari e fornire esempi nella classe CustomItemRepositoryImpl:

Spring importerà le dipendenze degli oggetti perché MongoTemplate è @Autowired. Inoltre, l'annotazione @Component consente a Spring di rilevare l'interfaccia CustomItemRepository.

Il passaggio successivo consiste nell'invocare questa funzione dall'interno della nostra classe principale. Come con il drugstoreItemRepo, dobbiamo definire il nostro customRepo come segue:

Quindi, nella classe principale, crea il seguente metodo che invoca la nostra funzione customRepo:

Aggiungi il seguente metodo al metodo run in modo che venga richiamato quando il programma viene eseguito:

Dovresti ottenere il seguente risultato:

Come detto in precedenza, siamo stati in grado di eseguire la modifica in un'unica transazione di database anziché in MongoRepository, che richiedeva tre azioni:ricerca, impostazione e salvataggio. MongoTemplate include anche il metodo updateMulti(), che ti permette di aggiornare più documenti contemporaneamente.

Conclusione

Abbiamo dimostrato in questo articolo quanto sia semplice integrare MongoDB con Spring Boot. Non è richiesto altro codice per connettersi a MongoDB Atlas. MongoDB Atlas fornisce un'interfaccia facile da usare per l'archiviazione e l'accesso ai dati da qualsiasi posizione. Se hai completato questo semplice tutorial, crediamo che tu ora capisca come utilizzare Spring Boot con MongoDB. In caso di difficoltà, contattaci tramite la sezione commenti per chiedere aiuto. Grazie per la lettura.