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

Sådan bruger du Spring Boot med MongoDB

Spring Boot er en Java-baseret open source-ramme til at skabe mikrotjenester, som giver udviklere mulighed for at implementere og udvikle tjenester uafhængigt. Hver service, der kører, har sin proces, hvorved man opnår den lette model, der understøtter forretningsapplikationer. Mikrotjenester har flere fordele:enkel skalerbarhed, minimal konfiguration, mindre produktionstid, containerkompatibilitet og nem udvikling.

Spring boot giver en god platform for udviklere til at bygge selvstændige og produktionsklare fjederapplikationer, som du bare kan køre; således kan man komme i gang med minimumskonfigurationer uden at skulle have en hel fjederkonfigurationsopsætning.

For eksempel er håndtering af afhængighedsstyring kompleks for store projekter; Spring Boot løser således denne vanskelighed ved at tilbyde et sæt afhængigheder for udviklerens bekvemmelighed. Spring Boot-applikationen scanner alle bønner og pakkeerklæringer, når applikationen initialiseres; Desuden inkluderer Spring Boot-applikationens annotering komponentscanning, automatisk konfiguration og Spring Boot-konfiguration.

Funktioner i Spring Boot

Nedenfor er nogle af standardfunktionerne for fjederstøvler:

  1. Det konfigurerer automatisk Spring- og tredjepartsbibliotekerne, når det er muligt
  2. Det giver meningsfulde "starter"-afhængigheder for at forenkle din build-konfiguration
  3. Den har intet krav om XML-konfiguration og ingen kodegenerering
  4. Desuden tilbyder den produktionsklare funktioner såsom eksternaliserede konfigurationsmetrikker og sundhedstjek
  5. Den har en indlejret Tomcat, Undertow direkte eller Jetty; derfor er der ingen grund til at installere WAR-filer
  6. Det opretter også selvstændige Spring-applikationer

Fordele ved Spring Boot for udviklere

  1. Det øger produktiviteten
  2. Det gør det nemt at udvikle og forstå fjederapplikationer
  3. Det reducerer tidsudvikling.

 Forårsstøvlens mål

Den er designet til at:

  1. Udvikl produktionsklare forårsapplikationer på en mere ligetil måde
  2. Undgå kompleks XML-konfiguration i foråret
  3. Reducer udviklingstiden og kør applikationen uafhængigt
  4. Tilbyd en mere ligetil måde at komme i gang med applikationen på.

Spring Boot er mere foretrukket på grund af de funktioner og fordele, den giver som:

  1. Tilvejebringelse af en kraftfuld batchbehandling og administration af REST-slutpunkter
  2. Tilvejebringelse af en mere fleksibel måde at konfigurere datatransaktioner, Java Beans j og XML-konfigurationer på.
  3. Tilbyder annotering baseret på forårsapplikationer
  4. Forenkler afhængighedsstyring, den inkluderer en indlejret Servlet Container
  5. Ingen manuelle konfigurationer er nødvendige, da alt i Spring Boot er automatisk konfigureret

MongoDB er et kildetilgængeligt dokumentorienteret databaseprogram på tværs af platforme. Det er en dokumentdatabase, der giver høj skalerbarhed og fleksibilitet af programmer. Desuden tilbyder den brugere hurtig forespørgsel og indeksering, hvilket i det lange løb øger dets ydeevne.

MongoDB er klassificeret som et NoSQL-databaseprogram og bruger JSON-lignende dokumenter med valgfrie og fleksible skemaer. Denne database er udviklet af MongoDB Inc., en amerikansk-baseret virksomhed, der udvikler og yder kommerciel support til den kildetilgængelige database. MongoDB er licenseret under Server-Side Public License (SSPL).

MongoDB har haft en løbende forbedring af sine funktioner på grund af igangværende versionsudvikling for eksempel;

DATO VERSION FUNKTIONSBEMÆRK
December 2009 1.2 Gemmede JavaScript-funktioner
Hurtigere indeksoprettelse
Flere indekser pr. samling
Konfigurerbar synkroniseringstid
Flere mindre funktioner og rettelser
August 2010 1.6 Kortlæg/reducer
Replikasæt
Produktionsklar sønderdeling
Understøttelse af IPv6
Marts 2013 2.4 Hashed indeks
Skift til V8 JavaScript-motor
Forbedret geospatial support
Forbedret tekstsøgning
Sikkerhedsforbedringer
8. april 2014 2.6 Forespørgselsmotorforbedringer
Aggregationsforbedringer
Sikkerhedsforbedringer
Ny skrive-operationsprotokol
Integration af tekst-søgning
3. marts 2015 3.0 Forbedret forklaringsfunktionalitet
Plugbar storage engine API
MongoDB Ops Manager
Kablet Tiger-lagringsmotorstøtte
SCRAM-SHA-1-godkendelse
8. december 2015 3.2 Forbedringer af replikeringsvalg
Dokumentvalidering
Kablet Tiger-lagermotor som standard
Konfigurer servere som replikasæt
Flyttet fra V8 til Spider Monkey
Dokumentvalidering
Læs bekymring
29. november 2016 3.4 Samling, lineariserbare læseproblemer og synspunkter
Juni 2018 4.0 Forbedrede transaktioner
13. juli 2021 5.0 Klientside-kryptering på feltniveau
Fremtidssikret versioneret API
Understøttelse af tidsserier
Live resharding indebærer ændring af objekt-shard-tilknytninger og flytning af objektet til et andet shard.

Hurtige og nemme stand-alone apps kan oprettes ved hjælp af Spring Boot (som vi vil se senere). Som et resultat af dens brugervenlighed er MongoDB blevet den mest populære NoSQL-database. Hurtig, sikker, pålidelig og kræver minimal udviklingstid kan skabes ved at kombinere Spring Boot og MongoDB.

Denne artikel viser, hvordan du bruger Spring Data MongoDB API til at kombinere Spring Boot med MongoDB.

Sådan bruger du Spring Boot med MongoDB

Spring Boot er en mikroservice-baseret webramme, der er automatisk konfigureret og kan give indbyggede sikkerheds- og databaseadgangsfunktioner. Således kan Spring-støvlen hurtigt skabe en selvstændig applikation uden konfigurationsændringer. På den anden side er MongoDB den mest populære NoSQL-database, da den nemt kan gemme og hente data. Kombinationen af ​​Spring Boot og MongoDB resulterer i sikre, hurtige, pålidelige applikationer, der kræver minimal udviklingstid.

Spring Boot skaber hurtige produktionsklare applikationer. MongoDB og Spring Boot interagerer ved hjælp af Mongo Template-klassen og Mongo Repository-grænsefladen.

  • Mongo-skabelon — den implementerer et sæt klar-til-brug API'er. Et godt valg til operationer som opdateringsaggregationer, blandt andre; desuden tilbyder Mongo Template mere raffineret kontrol over brugerdefinerede forespørgsler.
  • Mongo Repository bruges til grundlæggende forespørgsler, der involverer mange dokumentfelter som visning af dokumenter og dataoprettelse.

Spring Boot MongoDB-konfiguration, der bruger begge tilgange, kræver kun et par linjer kode.

Spring Boot er en applikationsramme til Java-webapplikationer baseret på MVC (Model-View-Controller) rammen. Dens afhængighedsinjektion håndterer funktioner som databasesikkerhed, adgang og initialisering, hvilket giver udviklere mulighed for at fokusere på forretningslogikken. Det er også bygget oven på Spring-rammerne, hovedsageligt til REST API'er og kræver meget få konfigurationer. Den har fire lag:

Præsentationslaget — View-delen af ​​MVC-rammeværket håndterer front-end.

Forretningslaget er controlleren, hvor al forretningslogik og valideringer udføres.

Vedholdenhedslag — Dette lag oversætter forretningsobjekterne til databaseobjekter.

Databaselag — De faktiske CRUD-operationer (Create, Read, Update, Delete).

MongoDB er en hurtig database, der er i stand til at håndtere enorme mængder af organiserede og ustrukturerede data, hvilket gør den ideel til webapplikationer. MongoDB gemmer data som binære JSON-objekter, hvilket forenkler datahentning. Spring-rammen inkluderer robuste forbindelser, der muliggør effektive databaseoperationer med MongoDB.

Vi er udelukkende optaget af Persistence og Database-lagene i denne Spring Boot with MongoDB-eksempeltutorial. Vi vil eksekvere vores software gennem et integreret udviklingsmiljø (IDE) for at opretholde en stærk vægt på CRUD-operationer. For at forbinde Spring Boot og MongoDB, tilføjer vi Spring Boot MongoDB-konfigurationer.

Hvad vi vil konstruere i dette eksempel

Lad os udvikle en fiktiv brugers indkøbsliste. Vi udfører følgende procedurer:

  1. Vi definerer en dagligvarevare Plain Old Java Object (POJO) med et ID, et navn, en mængde og en kategori i vores Spring-applikation.
  2. Derefter udfører vi oprettelse, læsning, opdatering og sletning (CRUD)-handlinger via MongoRepositorys offentlige grænseflade.
  3. Til sidst demonstrerer vi en anden metode til at ændre dokumenter ved at bruge MongoTemplate-klassen.

Forudsætninger

Vi kræver:

  • Cluster MongoDB Atlas (hvis du ikke allerede har en konto, tilmeld dig gratis, før du fortsætter til næste fase).
  • Forår Initializr
  • Java 1.8
  • Maven (installer Maven ved at gå til "Hjælp -> derefter Installer ny software" i Eclipse).
  • Et integreret udviklingsmiljø (IDE) vil importere de væsentlige biblioteker og afhængigheder. Eclipse vil blive brugt til denne projektillustration.

For at begynde skal du oprette et Spring Boot-projekt med følgende indstillinger ved hjælp af Spring Initializr:

Vælg Maven Project med Java (8) som programmeringssprog og Spring Boot 2.5.3 som version. Tilføj desuden Spring Web og Spring Data MongoDB-afhængigheder. Spring Web integrerer Apache Tomcat-serveren, Spring MVC og REST i din applikation for at centralisere styringen af ​​alle almindelige afhængigheder.

Vi udnytter Spring Data MongoDB-afhængigheden til at få adgang til data fra vores MongoDB Atlas-klynge i denne applikation.

Indtast metadata for projektet (som illustreret ovenfor), og vælg JAR-indstillingen. Spring Initializr administrerer pom.xml-filoprettelsen, mens Maven downloader de nødvendige afhængigheder via pom.xml.

Dette afslutter vores forberedelser til indstillingerne. Derefter kan vi klikke på knappen Generer for at generere alle de filer, der kræves for at bootstrap Spring Boot-projektet. Derefter begynder browseren automatisk at downloade en ZIP-fil.

Når du har downloadet ZIP-filen, skal du udpakke projektet. Åbn projektet fra IDE. Du kan se et eksempel på en projektstruktur, der ligner denne:

Som vi kan se, er de afhængigheder, vi tilføjede, inkluderet i pom.xml-filen som artifactId:

Det er tid til at udfylde src/main/java-undermappen med indhold.

Implementering af MongoDB-modellen

POJO- eller GroceryItem-klassen fungerer som vores model her.

Opret en pakke med navnet "com.example.mdbspringboot.model", og inkluder klassen GroceryItem.java i den.

Annotationen @Document bruges til at angive samlingsnavnet, som modellen vil bruge. MongoDB vil oprette samlingen, hvis den ikke allerede eksisterer.

Vi kan generere getters og settere til denne kode ved at bruge Eclipse Source -> Generate Getters and Setters mulighed. Først skal du bruge @Id-annotationen til at angive den primære nøgle _id for MongoDB-dokumentet. MongoDB vil automatisk producere et _id felt, når dokumentet oprettes, hvis vi ikke angiver noget.

Implementering af MongoDB API i Spring Boot

Repository er det sted, hvor API'en er implementeret. Den fungerer som en bro mellem databasen og modellen og giver adgang til alle CRUD-aktiviteter.

Opret en pakke med navnet "com.example.mdbspringboot.repository" til at indeholde alle lagerfiler.

Vi opretter en offentlig grænseflade til ItemRepository, der udvider MongoRepository-grænsefladen.

Den første tilgang, findItemByName, kræver et forespørgselsargument, som specificerer det felt, som forespørgslen skal filtreres på. Dette er angivet ved hjælp af annotationen @Query. Den anden teknik udnytter kategorifeltet til at hente alle objekter, der tilhører en bestemt kategori. Vi ønsker kun navn og nummer på feltet, der er projiceret i forespørgselssvaret; derfor sætter vi disse felter til 1. Vi genanvender metoden count() i dens nuværende tilstand.

Eksempler på MongoDB med Spring Boot CRUD

Vi er nu klar til at udvikle vores Spring Application og teste metoderne.

For at linke til MongoDB Atlas definerer vi forbindelsesstrengen i src/main/resources-mappens application.properties-fil. Klyngens forbindelsesstreng kan tilgås i Atlas UI. Der kræves ingen anden fil for at inkludere forbindelsesrelateret kode. Spring Boot administrerer databaseforbindelsen på vores vegne.

Derudover angiver vi databasenavnet her – MongoDB vil oprette et, hvis det ikke findes.

Vi bruger ikke controlleren eller visningen i denne Spring Boot MongoDB-eksempel. For at se outputtet på konsollen bruger vi i stedet en CommandLineRunner.

Opret hovedklassen MdbSpringBootApplication.java i rodpakken com.example.mdbspringboot:

For at udføre forårsapplikationen bruger vores klasse MdbSpringBootApplication CommandLineRunner-grænsefladen. ItemRepository er Autowired, hvilket betyder, at Spring vil opdage det automatisk. @SpringBootApplication-annotationen bruges til at initialisere applikationskonteksten. Derudover aktiverer vi Mongo Repositories med @EnableMongoRepositories. Vores projekts struktur skulle nu ligne følgende:

Lad os nu tilføje lageroperationerne til hovedklassen, som vil blive brugt til CRUD-operationer:

Opret en MongoDB Spring Boot-operation

Vi vil bruge gem-funktionen til at oprette nye dokumenter. Vi kan få adgang til gemmemetoden via SimpleMongoRepository-klassen, som bruger MongoRepository-protokollen. Vores ItemRepository-grænseflade udvider MongoRepositorys ItemRepository-grænseflade.

Gem-metoden vil acceptere en parameter af typen GroceryItem. Denne sektion bygger fem købmandsvarer (dokumenter), og brug derefter gem-funktionen til at gemme dem i MongoDB.

Spring Boot MongoDB læseoperationer

Vi udfører fire forskellige læseoperationer i denne applikation:

Brug findAll()-funktionen til at hente alle dokumenter (købmandsvarer).

FindItemByName-funktionen returnerer et enkelt element (dokument) baseret på dets navnefelt.

Hent en liste over objekter organiseret efter kategori.

Beregn det samlede antal objekter.

Vi kan designe en hjælpefunktion til at formatere resultatet af læseoperationer:

Opdatering af MongoDB Spring Boot

Antag, at vi ændrer mening og foretrækker udtrykket "munchies" frem for "snacks" på vores indkøbsliste. Vi bliver nødt til at opdatere alle dokumenter, der indeholder kategorien "snacks". For at opnå dette skal vi først hente alle papirer, der tilhører kategorien "snacks", ændre kategorien til "munchies" og derefter gemme alle dokumenter.

MongoDB Spring Boot sletning

I stedet for at ændre en kategori eller vare, vil vi måske fjerne en købmandsvare fra vores liste. Ved at bruge den foruddefinerede deleteById-funktion kan vi fjerne dagligvarevaren med et specifikt id.

Vi kunne bruge groceryItemRepo.deleteAll(); funktion til at fjerne alle elementer. Fjernelse af alle dokumenter i samlingen vil ikke slette dem.

Samling af CRUD-operationerne

Derefter implementerer vi CommandLineRunner. For at påberåbe de foregående metoder, brug run() metoden:

System.out-sætningerne bruges til at forbedre udseendet af output.

Når softwaren køres, forventes følgende output:

MongoDB Spring Boots opdateringsfunktion i forbindelse med MongoTemplate

Derudover kan vi bruge MongoTemplate-klassen til at udføre opdateringshandlinger på et specifikt felt. Det inkluderer org.springframework.data.mongodb.core.query-pakkens standardfunktionalitet. Vi behøver ikke at skrive en stor mængde kode, og opdateringen kan udføres med en enkelt databaseforespørgsel. MongoTemplate kan også bruges til mere komplicerede processer såsom aggregeringer (ikke omfattet af denne vejledning).

Et brugerdefineret lager skal laves, før du bruger en klasse kaldet MongoTemplate. Det er her, forespørgslen til opdateringen vil blive bygget.

Tillad mig at demonstrere, hvordan man konstruerer en metode, der opdaterer mængden af ​​en supermarkedsvare.

Konstruer en grænseflade CustomItemRepository:

Vi kan udvide grænsefladen med så mange metoder som nødvendigt og give eksempler i CustomItemRepositoryImpl-klassen:

Spring vil importere objektafhængighederne, fordi MongoTemplate er @Autowired. Derudover gør @Component-annotationen Spring i stand til at opdage CustomItemRepository-grænsefladen.

Det følgende trin er at påkalde denne funktion fra vores hovedklasse. Som med groceryItemRepo, skal vi definere vores customRepo som følger:

Opret derefter følgende metode i hovedklassen, der aktiverer vores customRepo-funktion:

Tilføj følgende metode til kørselsmetoden, så den aktiveres, når programmet køres:

Du bør opnå følgende resultat:

Som tidligere sagt var vi i stand til at udføre ændringen i en enkelt databasetransaktion i stedet for MongoRepository, hvilket krævede tre handlinger:søg, sæt og gem. MongoTemplate inkluderer også updateMulti() metoden, som giver dig mulighed for at opdatere flere dokumenter samtidigt.

Konklusion

Vi demonstrerede i denne artikel, hvor nemt det er at integrere MongoDB med Spring Boot. Der kræves ingen anden kode for at oprette forbindelse til MongoDB Atlas. MongoDB Atlas giver en brugervenlig grænseflade til lagring og adgang til data fra ethvert sted. Hvis du har gennemført denne enkle vejledning, tror vi, at du nu forstår, hvordan du bruger Spring Boot med MongoDB. Hvis du støder på problemer, kan du kontakte os via kommentarsektionen for at få hjælp. Tak fordi du læste med.


  1. MongoDB:Er det muligt at lave en forespørgsel uden store og små bogstaver?

  2. doRedis med mærkelig socket-forbindelsesfejl i Ubuntu Linux, R og RStudio

  3. Hvordan skal jeg oprette forbindelse til en Redis-instans fra en AWS Lambda-funktion?

  4. MongoDB $weeklyUpdate #66 (22. april 2022):Hackathons, mongosh og Github