sql >> Databáze >  >> NoSQL >> MongoDB

Jak používat Spring Boot s MongoDB

Spring Boot je open-source framework založený na Javě pro vytváření mikroslužeb, který umožňuje vývojářům nasazovat a vyvíjet služby nezávisle. Každá spuštěná služba má svůj proces, čímž se dosahuje odlehčeného modelu, který podporuje podnikové aplikace. Mikroslužby mají několik výhod:jednoduchou škálovatelnost, minimální konfiguraci, kratší produkční čas, kompatibilitu kontejnerů a snadný vývoj.

Spring boot poskytuje vývojářům dobrou platformu pro vytváření samostatných a produkčně připravených jarních aplikací, které stačí spustit; lze tedy začít s minimálními konfiguracemi, aniž by bylo potřeba celé nastavení konfigurace pružiny.

Například správa závislostí je složitá pro velké projekty; Spring Boot tak řeší tento problém poskytnutím sady závislostí pro pohodlí vývojáře. Aplikace Spring Boot při inicializaci aplikace skenuje všechny beany a deklarace balíčků; Kromě toho anotace aplikace Spring Boot zahrnuje skenování komponent, automatickou konfiguraci a konfiguraci Spring Boot.

Funkce Spring Boot

Níže jsou uvedeny některé ze standardních funkcí pružinových bot:

  1. Pokud je to možné, automaticky nakonfiguruje knihovny Spring a 3rd party
  2. Poskytuje zaujaté „startovací“ závislosti pro zjednodušení konfigurace sestavení
  3. Nevyžaduje konfiguraci XML ani generování kódu
  4. Navíc nabízí funkce připravené k produkci, jako jsou metriky externí konfigurace a kontroly stavu
  5. Má vložený Tomcat, přímo Undertow nebo Jetty; není tedy potřeba nasazovat soubory WAR
  6. Také vytváří samostatné aplikace Spring

Výhody Spring Boot pro vývojáře

  1. Zvyšuje produktivitu
  2. Usnadňuje vývoj a pochopení jarních aplikací
  3. Snižuje to časový vývoj.

 Cíle jarního startu

Je navržen tak, aby:

  1. Vyvíjejte pružinové aplikace připravené k výrobě přímočařejším způsobem
  2. Na jaře se vyhněte složité konfiguraci XML
  3. Zkraťte dobu vývoje a spusťte aplikaci nezávisle
  4. Nabízejte jednodušší způsob, jak začít s aplikací.

Spring Boot je preferovanější kvůli funkcím a výhodám, které poskytuje, jako jsou:

  1. Poskytování výkonného dávkového zpracování a správy koncových bodů REST
  2. Poskytování flexibilnějšího způsobu konfigurace datových transakcí, Java Beans j a konfigurací XML.
  3. Nabízí anotaci na základě jarních aplikací
  4. Zjednodušuje správu závislostí, obsahuje vestavěný kontejner Servlet
  5. Není potřeba žádné ruční konfigurace, protože vše v Spring Boot je konfigurováno automaticky

MongoDB je zdrojově dostupný databázový program orientovaný na dokumenty pro více platforem. Jedná se o databázi dokumentů, která poskytuje vysokou škálovatelnost a flexibilitu programů. Kromě toho nabízí uživatelům rychlé dotazování a indexování, což z dlouhodobého hlediska zvyšuje jeho výkon.

MongoDB je klasifikován jako databázový program NoSQL a používá dokumenty podobné JSON s volitelnými a flexibilními schématy. Tato databáze byla vyvinuta MongoDB Inc., americkou společností, která vyvíjí a poskytuje komerční podporu pro databázi s dostupnými zdroji. MongoDB je licencován pod Server-Side Public License (SSPL).

MongoDB neustále vylepšuje své funkce, například díky pokračujícímu vývoji verzí;

DATUM VERZE POZNÁMKA K FUNKCI
Prosinec 2009 1.2 Uložené funkce JavaScript
Rychlejší vytváření indexu
Více indexů na kolekci
Konfigurovatelný čas synchronizace
Několik drobných funkcí a oprav
srpen 2010 1.6 Zmapovat/zmenšit
Sady replik
Sharding připravený k výrobě
Podpora IPv6
březen 2013 2.4 Hašovaný index
Přepnout na V8 JavaScript engine
Vylepšená geoprostorová podpora
Vylepšené textové vyhledávání
Vylepšení zabezpečení
8. dubna 2014 2.6 Vylepšení modulu dotazu
Vylepšení agregace
Vylepšení zabezpečení
Nový protokol operace zápisu
Integrace textového vyhledávání
3. března 2015 3.0 Vylepšená funkce vysvětlení
Rozhraní API zásuvného úložiště
Správce operací MongoDB
Podpora úložišť Wired Tiger
Ověření SCRAM-SHA-1
8. prosince 2015 3.2 Vylepšení voleb replikace
Ověření dokumentů
Wired Tiger storage engine ve výchozím nastavení
Nakonfigurujte servery jako sady replik
Přesunuto z V8 na Spider Monkey
Ověření dokumentů
Přečtěte si znepokojení
29. listopadu 2016 3.4 Řízení, linearizovatelnost čtení obav a zobrazení
Červen 2018 4.0 Vylepšené transakce
13. července 2021 5.0 Šifrování na úrovni pole na straně klienta
Rozhraní API s verzí pro budoucnost
Podpora časových řad
Oživené přeostření znamená změnu mapování objekt-střep a přesunutí objektu na jiný fragment.

Rychlé a snadné samostatné aplikace lze vytvářet pomocí Spring Boot (jak uvidíme později). Díky snadnému použití se MongoDB stala nejoblíbenější databází NoSQL. Rychlé, bezpečné, spolehlivé a vyžadující minimální čas na vývoj lze vytvořit kombinací Spring Boot a MongoDB.

Tento článek ukazuje, jak používat Spring Data MongoDB API ke kombinaci Spring Boot s MongoDB.

Jak používat Spring Boot s MongoDB

Spring Boot je webový rámec založený na mikroslužbách, který je automaticky konfigurován a může poskytovat vestavěné funkce zabezpečení a přístupu k databázi. Spring boot tak může rychle vytvořit samostatnou aplikaci bez změn konfigurace. Na druhou stranu je MongoDB nejoblíbenější databází NoSQL, protože dokáže snadno ukládat a načítat data. Výsledkem kombinace Spring Boot a MongoDB jsou bezpečné, rychlé a spolehlivé aplikace vyžadující minimální dobu vývoje.

Spring Boot vytváří rychlé aplikace připravené k výrobě. MongoDB a Spring Boot spolupracují pomocí třídy Mongo Template a rozhraní Mongo Repository.

  • Šablona Mongo — implementuje sadu rozhraní API připravených k použití. Dobrá volba pro operace, jako jsou mimo jiné agregace aktualizací; navíc Mongo Template nabízí jemnější kontrolu nad vlastními dotazy.
  • Úložiště Mongo se používá pro základní dotazy týkající se mnoha polí dokumentu, jako je prohlížení dokumentů a vytváření dat.

Konfigurace Spring Boot MongoDB využívající oba přístupy vyžaduje pouze několik řádků kódu.

Spring Boot je aplikační rámec pro webové aplikace Java založený na frameworku MVC (Model-View-Controller). Jeho vkládání závislostí zpracovává funkce, jako je zabezpečení databáze, přístup a inicializace, což umožňuje vývojářům soustředit se na obchodní logiku. Je také postaven na platformě Spring, hlavně pro REST API a vyžaduje velmi málo konfigurací. Má čtyři vrstvy:

Vrstva prezentace — Pohledová část rámce MVC zpracovává front-end.

Obchodní vrstva je řadič, kde se provádí veškerá obchodní logika a ověřování.

Vrstva perzistence — Tato vrstva převádí obchodní objekty na databázové objekty.

Databázová vrstva — Skutečné operace CRUD (Create, Read, Update, Delete).

MongoDB je rychlá databáze schopná zpracovávat obrovské množství organizovaných i nestrukturovaných dat, díky čemuž je ideální pro webové aplikace. MongoDB ukládá data jako binární objekty JSON, což zjednodušuje načítání dat. Framework Spring obsahuje robustní konektory, které umožňují efektivní databázové operace s MongoDB.

V tomto příkladu výukového programu Spring Boot s MongoDB se zabýváme výhradně vrstvami Persistence a Database. Náš software budeme provozovat prostřednictvím integrovaného vývojového prostředí (IDE), abychom zachovali silný důraz na operace CRUD. Pro propojení Spring Boot a MongoDB přidáme konfigurace Spring Boot MongoDB.

Co zkonstruujeme v tomto příkladu

Dovolte nám vytvořit nákupní seznam fiktivního uživatele. Provedeme následující postupy:

  1. V naší jarní aplikaci definujeme potravinu Plain Old Java Object (POJO) pomocí ID, názvu, množství a kategorie.
  2. Následně provádíme akce vytváření, čtení, aktualizace a mazání (CRUD) prostřednictvím veřejného rozhraní MongoRepository.
  3. Nakonec předvádíme jinou metodu úpravy dokumentů pomocí třídy MongoTemplate.

Předpoklady

Požadujeme:

  • Cluster MongoDB Atlas (pokud ještě nemáte účet, zaregistrujte se zdarma, než budete pokračovat do další fáze).
  • Spring Initializr
  • Java 1.8
  • Maven (nainstalujte Maven tak, že v Eclipse přejdete na „Nápověda -> poté Instalovat nový software“).
  • Integrované vývojové prostředí (IDE) importuje základní knihovny a závislosti. Pro tuto ilustraci projektu bude použito Eclipse.

Chcete-li začít, vytvořte projekt Spring Boot s následujícím nastavením pomocí Spring Initializr:

Vyberte Maven Project s Java (8) jako programovací jazyk a Spring Boot 2.5.3 jako verzi. Navíc přidejte závislosti Spring Web a Spring Data MongoDB. Spring Web integruje server Apache Tomcat, Spring MVC a REST do vaší aplikace, aby centralizoval správu všech běžných závislostí.

K přístupu k datům z našeho clusteru MongoDB Atlas v této aplikaci využíváme závislost Spring Data MongoDB.

Zadejte metadata projektu (jak je znázorněno výše) a vyberte možnost JAR. Spring Initializr spravuje vytváření souboru pom.xml, zatímco Maven stahuje požadované závislosti přes pom.xml.

Tím jsou naše přípravy na nastavení dokončeny. Poté můžeme kliknout na tlačítko Generate a vygenerovat všechny soubory potřebné k zavedení projektu Spring Boot. Poté prohlížeč začne automaticky stahovat soubor ZIP.

Po stažení souboru ZIP projekt rozbalte. Z IDE otevřete projekt. Můžete vidět příklad struktury projektu podobné tomuto:

Jak vidíme, závislosti, které jsme přidali, jsou zahrnuty v souboru pom.xml jako artifactId:

Je čas naplnit podadresář src/main/java obsahem.

Implementace modelu MongoDB

Jako náš model zde slouží třída POJO nebo GroceryItem.

Vytvořte balíček s názvem „com.example.mdbspringboot.model“ a zahrňte do něj třídu GroceryItem.java.

Anotace @Document se používá k určení názvu kolekce, kterou bude model používat. MongoDB vytvoří kolekci, pokud ještě neexistuje.

Pro tento kód můžeme vygenerovat getry a settery pomocí možnosti Eclipse Source -> Generate getters and setters. Nejprve použijte anotaci @Id k zadání primárního klíče _id dokumentu MongoDB. MongoDB automaticky vytvoří pole _id při vytvoření dokumentu, pokud nic neurčíme.

Implementace rozhraní MongoDB API v aplikaci Spring Boot

V úložišti je implementováno API. Slouží jako most mezi databází a modelem a poskytuje přístup ke všem aktivitám CRUD.

Vytvořte balíček s názvem „com.example.mdbspringboot.repository“, který bude obsahovat všechny soubory úložiště.

Vytváříme veřejné rozhraní pro ItemRepository, které rozšiřuje rozhraní MongoRepository.

První přístup, findItemByName, vyžaduje argument dotazu, který určuje pole, podle kterého má být dotaz filtrován. To je specifikováno pomocí anotace @Query. Druhá technika využívá pole kategorie k načtení všech objektů patřících do určité kategorie. Chceme pouze název a číslo pole promítnuté do odpovědi na dotaz; proto nastavíme tato pole na 1. Znovu použijeme metodu count() v jejím aktuálním stavu.

Příklady MongoDB s Spring Boot CRUD

Nyní jsme připraveni vyvinout naši jarní aplikaci a otestovat metody.

Pro propojení s MongoDB Atlas definujeme připojovací řetězec v souboru application.properties složky src/main/resources. Připojovací řetězec clusteru je přístupný v uživatelském rozhraní Atlas. Pro zahrnutí kódu souvisejícího s připojením není vyžadován žádný další soubor. Spring Boot spravuje připojení k databázi naším jménem.

Navíc zde specifikujeme název databáze – MongoDB jej vytvoří, pokud neexistuje.

V této ukázce Spring Boot MongoDB nepoužíváme řadič ani pohled. Místo toho k zobrazení výstupu na konzole použijeme CommandLineRunner.

Vytvořte hlavní třídu MdbSpringBootApplication.java v kořenovém balíčku com.example.mdbspringboot:

Ke spuštění jarní aplikace používá naše třída MdbSpringBootApplication rozhraní CommandLineRunner. ItemRepository je Autowired, což znamená, že jej Spring automaticky objeví. Anotace @SpringBootApplication se používá k inicializaci kontextu aplikace. Kromě toho povolujeme úložiště Mongo pomocí @EnableMongoRepositories. Struktura našeho projektu by nyní měla vypadat takto:

Nyní přidejte operace úložiště do hlavní třídy, která bude použita pro operace CRUD:

Vytvořte operaci MongoDB Spring Boot

K vytvoření nových dokumentů použijeme funkci uložení. K metodě ukládání můžeme přistupovat přes třídu SimpleMongoRepository, která využívá protokol MongoRepository. Naše rozhraní ItemRepository rozšiřuje rozhraní ItemRepository MongoRepository.

Metoda uložení přijme parametr typu GroceryItem. Tato sekce vytvoří pět potravinových položek (dokumentů) a poté je pomocí funkce uložení uloží do MongoDB.

Operace čtení Spring Boot MongoDB

V této aplikaci provádíme čtyři různé operace čtení:

Použijte funkci findAll() k načtení všech dokumentů (potravin).

Funkce findItemByName vrací jednu položku (dokument) na základě pole jejího názvu.

Získejte seznam objektů uspořádaných podle kategorií.

Vypočítejte celkový počet objektů.

Můžeme navrhnout pomocnou funkci pro formátování výsledku operací čtení:

Operace aktualizace MongoDB Spring Boot

Předpokládejme, že změníme názor a upřednostníme termín „mnchies“ před „svačinkami“ na našem seznamu potravin. Potřebovali bychom aktualizovat všechny dokumenty, které obsahují kategorii „svačiny“. Abychom toho dosáhli, musíme nejprve načíst všechny dokumenty patřící do kategorie „snacks“, změnit kategorii na „munchies“ a poté uložit všechny dokumenty.

Operace odstranění MongoDB Spring Boot

Namísto změny kategorie nebo položky můžeme chtít odstranit potravinovou položku z našeho seznamu. Pomocí předdefinované funkce deleteById můžeme odstranit potravinu se specifickým ID.

Mohli bychom použít groceryItemRepo.deleteAll(); funkce pro odstranění všech položek. Odstraněním všech dokumentů ve sbírce nedojde k jejich odstranění.

Sestavení operací CRUD

Poté implementujeme CommandLineRunner. Chcete-li vyvolat předchozí metody, použijte metodu run():

Příkazy system.out se používají ke zlepšení vzhledu výstupu.

Po spuštění softwaru se očekává následující výstup:

Funkce aktualizace MongoDB Spring Boot ve spojení s MongoTemplate

Navíc můžeme využít třídu MongoTemplate k provádění aktualizačních akcí na konkrétním poli. Zahrnuje výchozí funkce balíčku org.springframework.data.mongodb.core.query. Nemusíme psát velké množství kódu a aktualizaci lze provést jediným databázovým dotazem. MongoTemplate lze také použít pro složitější procesy, jako jsou agregace (není předmětem této příručky).

Před použitím třídy s názvem MongoTemplate je nutné vytvořit vlastní úložiště. Zde bude vytvořen dotaz na aktualizaci.

Dovolte mi předvést, jak vytvořit metodu, která aktualizuje množství zboží v supermarketu.

Vytvořte rozhraní CustomItemRepository:

Můžeme rozšířit rozhraní o tolik metod, kolik je potřeba, a uvést příklady ve třídě CustomItemRepositoryImpl:

Spring importuje závislosti objektů, protože MongoTemplate je @Autowired. Navíc anotace @Component umožňuje Springu objevit rozhraní CustomItemRepository.

Následujícím krokem je vyvolání této funkce z naší hlavní třídy. Stejně jako u groceryItemRepo musíme definovat naše customRepo následovně:

Poté v hlavní třídě vytvořte následující metodu, která vyvolá naši funkci customRepo:

Přidejte do metody run následující metodu, aby byla vyvolána při spuštění programu:

Měli byste získat následující výsledek:

Jak již bylo řečeno, byli jsme schopni provést úpravu v jediné databázové transakci namísto MongoRepository, což vyžadovalo tři akce:vyhledat, nastavit a uložit. MongoTemplate také obsahuje metodu updateMulti(), která umožňuje aktualizovat několik dokumentů současně.

Závěr

V tomto článku jsme ukázali, jak jednoduché je integrovat MongoDB s Spring Boot. Pro připojení k MongoDB Atlas není potřeba žádný další kód. MongoDB Atlas poskytuje snadno použitelné rozhraní pro ukládání a přístup k datům z libovolného místa. Pokud jste dokončili tento jednoduchý tutoriál, věříme, že nyní chápete, jak používat Spring Boot s MongoDB. Pokud narazíte na nějaké potíže, požádejte o pomoc prostřednictvím sekce komentářů. Děkuji za přečtení.


  1. 6 způsobů, jak získat rok z rande v MongoDB

  2. mongoose :vyhledejte data smyčkováním na řadě modelů

  3. Node JS Redis Client Connection Opakování

  4. Mongoose řetězec na ObjectID