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:
- Pokud je to možné, automaticky nakonfiguruje knihovny Spring a 3rd party
- Poskytuje zaujaté „startovací“ závislosti pro zjednodušení konfigurace sestavení
- Nevyžaduje konfiguraci XML ani generování kódu
- Navíc nabízí funkce připravené k produkci, jako jsou metriky externí konfigurace a kontroly stavu
- Má vložený Tomcat, přímo Undertow nebo Jetty; není tedy potřeba nasazovat soubory WAR
- Také vytváří samostatné aplikace Spring
Výhody Spring Boot pro vývojáře
- Zvyšuje produktivitu
- Usnadňuje vývoj a pochopení jarních aplikací
- Snižuje to časový vývoj.
Cíle jarního startu
Je navržen tak, aby:
- Vyvíjejte pružinové aplikace připravené k výrobě přímočařejším způsobem
- Na jaře se vyhněte složité konfiguraci XML
- Zkraťte dobu vývoje a spusťte aplikaci nezávisle
- 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:
- Poskytování výkonného dávkového zpracování a správy koncových bodů REST
- Poskytování flexibilnějšího způsobu konfigurace datových transakcí, Java Beans j a konfigurací XML.
- Nabízí anotaci na základě jarních aplikací
- Zjednodušuje správu závislostí, obsahuje vestavěný kontejner Servlet
- 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:
- V naší jarní aplikaci definujeme potravinu Plain Old Java Object (POJO) pomocí ID, názvu, množství a kategorie.
- Následně provádíme akce vytváření, čtení, aktualizace a mazání (CRUD) prostřednictvím veřejného rozhraní MongoRepository.
- 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í.