Programování

Mastering Spring framework 5, Part 1: Spring MVC

Spring MVC je tradiční knihovna Spring Framework pro vytváření webových aplikací Java. Je to jeden z nejpopulárnějších webových frameworků pro vytváření plně funkčních webových aplikací Java a webových služeb RESTful. V tomto kurzu získáte přehled o Spring MVC a naučíte se, jak vytvářet webové aplikace Java pomocí Spring Boot, Spring Initializr a Thymeleaf.

stáhnout Stáhnout kód Získejte zdrojový kód například pro aplikace v tomto výukovém programu. Vytvořil pro JavaWorld Steven Haines

Jarní bota s jarní inicializací

Svou webovou aplikaci Spring MVC zrychlíme pomocí Spring Boot a Spring Initializr. Vzhledem k zadání pro typ aplikace, která má být vytvořena, Spring Initializr používá nejběžnější závislosti a výchozí hodnoty pro nastavení a konfiguraci základní aplikace Spring Boot. Můžete také přidat vlastní závislosti a Spring Initializr je zahrne a spravuje, čímž zajistí kompatibilitu verzí se softwarem třetích stran a Springem. Aplikace Spring Boot běží samostatně, aniž by bylo nutné poskytovat běhové prostředí.

V tomto případě, protože vytváříme webovou aplikaci, Spring Boot automaticky zahrne a nakonfiguruje Tomcat jako součást běhu aplikace. Můžeme také přizpůsobit aplikaci přidáním ovladače databáze H2 do našeho souboru Maven POM. Spring Boot poté automaticky vytvoří vloženou databázi a Zdroj dat instance v kontextu aplikace. Jakmile jsou závislosti nastaveny, Spring Boot poskytne výchozí konfigurace aplikace. Samozřejmě můžeme změnit konfigurace, pokud chceme, ale díky Spring Boot máme náskok: plně nakonfigurovanou a fungující aplikaci hned po vybalení z krabice.

Jakmile vybereme a nakonfigurujeme naše závislosti, předáme tyto výběry Spring Initializr, který poskytne soubor ZIP ke stažení obsahující základní projekt Spring Boot.

Jarní MVC s databázovým modulem H2

Začneme vytvořením základní webové aplikace Spring MVC, která přetrvává data do vložené databáze H2.

Krok 1. Nastavení a konfigurace aplikace

Přejděte na Spring Initializr na start.spring.io a vyberte Vytvořte projekt Maven pomocí Java a Spring Boot 2.0.X, kde X je nejnovější verze Spring Boot (2.0.3 v době tohoto psaní). Ujistěte se, že jste vybrali Spring Boot 2.x, abyste mohli implementovat Spring Web MVC 5. Spring Boot 1.4 a Spring Boot 1.5 bude implementovat Spring 4.

Zadejte název skupiny ve formátu odpovídajícím vaší webové adrese, například com.geekcap.javaworlda zadejte název artefaktu, například spring5mvc-příklad. Obrázek 1 ukazuje moji konfiguraci.

Steven Haines

Chcete-li do webové aplikace přidat závislosti, můžete do seznamu buď zadat seznam závislostí oddělených čárkami Vyhledejte závislosti textové pole nebo klikněte na Přepněte na plnou verzi. Jednodušší cestou pojedeme kliknutím na Přepněte na plnou verzi. Závislosti jsou rozděleny do skupin, například Core, Web a Template Engines. V tomto příkladu zaškrtněte políčka u: Web -> Web, Šablonové motory -> Thymeleaf, SQL -> JPA a SQL -> H2. Tady je to, co každý z těchto výběrů přidá do aplikace:

  • Web: Jarní MVC a Tomcat
  • Thymeleaf: Thymeleaf webový šablonový modul
  • JPA: Spring JPA, Hibernate a Spring Data
  • H2: Integrovaná databáze H2

Po dokončení klikněte na ikonu Vytvořit projekt tlačítko ve spodní části stránky. Spring Initializr vytvoří hotový soubor ZIP se všemi požadovanými zdroji projektu, který si můžete stáhnout.

Krok 2. Importujte projekt Spring Initializr do svého IDE

Extrahujte soubor ZIP z Spring Initializr a poté importujte projekt do svého oblíbeného IDE. Chcete-li například importovat projekt do IntelliJ, zvolte Soubor -> Nový projekt, jak je znázorněno na obrázku 2.

Steven Haines

Krok 3. Nastavte svůj Maven POM

Dále přejděte do Importujte projekt z externího modulu, Vybrat Mavena stiskněte další. Nezapomeňte vybrat sadu SDK pro projekt Java 1.8 a poté stisknout Dokončit.

Spouštěcí aplikace Spring Boot

Nyní se podívejme na spouštěcí aplikaci Spring Boot, která byla dosud vygenerována naším (minimálním) úsilím.

Chcete-li začít, výpis 1 zobrazuje soubor Maven POM.

Výpis 1. Maven pom.xml

   4.0.0 com.geekcap.javaworld spring5mvc-příklad 0.0.1-SNAPSHOT jar Spring5mvc-příklad Demo projekt pro Spring Boot org.springframework.boot spring-boot-starter-parent 2.0.3.RELEASE UTF-8 UTF-8 1.8 org .springframework.boot spring-boot-starter-data-jpa org.springframework.boot spring-boot-starter-thymeleaf org.springframework.boot spring-boot-starter-web com.h2database h2 runtime org.springframework.boot spring-boot -starter-test test org.springframework.boot spring-boot-maven-plugin 

Všimněte si, že soubor POM používá speciální nadřazený POM: jaro-boot-startér-rodič. K správě verzí všech našich závislostí a zajištění kompatibility verzí použijeme nadřazený POM. Úložiště na konci souboru POM odkazují na jaro momentka a milník úložiště. Potřebujeme je, protože Spring Boot 2.x je v době psaní tohoto článku stále milníkem.

Závislosti jsou poměrně minimální a většina z nich je předzvěstí spouštěč pružiny:

  • spring-boot-starter-data-jpa
  • jaro-boot-startér-thymeleaf
  • jaro-boot-startovací web
  • test spouštěče pružiny

Každá z těchto startovacích závislostí přináší všechny dílčí závislosti, které potřebuje. Obrázek 3 ukazuje částečně rozšířený pohled na závislost v IntelliJ.

Steven Haines

Soubor POM obsahuje následující závislosti:

  • spring-boot-starter-data-jpa zahrnuje Hibernate a Spring Data.
  • jaro-boot-startér-thymeleaf zahrnuje modul šablony Thymeleaf.
  • jaro-boot-startovací web zahrnuje spring-boot-starter-tomcat, vestavěná verze Apache Tomcat.
  • spring-boot-starter-json zahrnuje knihovny Jackson JSON.
  • jaro-web a jaro-webmvc zahrnuje Spring MVC.
  • test spouštěče pružiny zahrnuje testování knihoven jako JUnit a Mockito.

Když Spring Boot vidí tyto závislosti v CLASSPATH, zahájí automatickou konfiguraci. Například když najde jaro-boot-startovací web, vytvoří vloženou verzi Tomcat, a když najde H2 a spring-boot-starter-jpa vytváří integrovanou databázi H2 a režim spánku EntityManager. Poté připojí EntityManager do jarních dat.

Spring Boot také vytvoří jednu třídu, kterou lze použít ke spuštění aplikace. Třída pro ukázkovou aplikaci je uvedena ve výpisu 2.

Výpis 2. Spring5mvcExampleApplication.java

 balíček com.geekcap.javaworld.spring5mvcexample; importovat org.springframework.boot.SpringApplication; importovat org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication veřejná třída Spring5mvcExampleApplication {public static void main (String [] args) {SpringApplication.run (Spring5mvcExampleApplication.class, args); }} 

Tato třída využívá SpringApplication.run () metoda, předání třídy ke spuštění (Spring5mvcExampleApplication v tomto příkladu). The @SpringBootApplication anotace zahrnuje následující anotace:

  • @Konfigurace informuje jaro, že Spring5mvcExampleApplication třída obsahuje informace o konfiguraci. (Tuto anotaci lze použít k vytvoření fazolí, které se zaregistrují v jarním kontextu.)
  • @EnableAutoConfiguration říká Spring, aby automaticky konfiguroval zdroje ze závislostí nalezených v CLASSPATH, jako jsou H2 a Tomcat.
  • @ComponentScan říká Spring, aby skenoval balíčky v CLASSPATH pod aktuálním balíčkem (com.geekcap.javaworld.spring5mvcexample) pro komponenty s anotací Spring, jako je @Servis a @Ovladač.

Jaro skenuje CLASSPATH a automaticky vytváří komponenty, jako je vložený server Tomcat a databáze H2. Poté naplní jarní kontext aplikačními komponentami nalezenými ve skenování balíčku. V podstatě Spring Boot velmi usnadňuje výběr a konfiguraci služeb, komponent, řadičů, entit atd., Které pro svou aplikaci potřebujete. Jakmile to uděláte, Spring je automaticky najde, zpřístupní je v jarním kontextu a automaticky vytvoří vše dohromady.

Máme nastavení spouštěcího projektu Spring Boot a jsme připraveni jít. V další části vytvoříme komponenty Spring MVC pro naši webovou aplikaci Java.

Co je to jarní kontext?

The Jarní kontext je registr všech dostupných jarních fazolí. Třídy jsou identifikovány jako jarní fazole jejich anotací konkrétními jarními anotacemi. Mezi příklady patří @Servis, který identifikuje obchodní službu, @Ovladač, který identifikuje Spring MVC řadič (tj. zpracovává webové požadavky), a @Entity, což je anotace JPA používaná k identifikaci tříd, které jsou mapovány na databázové tabulky.

Jakmile jsou tyto fazole anotovány, je třeba je zaregistrovat v kontextu Spring, což Spring Boot provádí provedením skenování balíků všech tříd v balíčcích ve vašem projektu. Při vytváření Spring kontextu implementuje návrhový vzor inversion-of-control (IoC) prostřednictvím vkládání závislostí: když Spring bean potřebuje závislost, jako je služba nebo úložiště, bean může buď definovat konstruktor, který přijímá závislé fazole nebo to může využít @Autowired anotace sdělující Springovi, že tuto závislost potřebuje. Jaro vyřeší všechny závislosti a "autowires" aplikace společně.

Dependency Injection je výkonný návrhový vzor, ​​protože místo vytváření a správy závislostí uvnitř vašeho kódu - což může být nepořádek a vede k těsně spojeným třídám - můžete místo toho delegovat kontrolu na kontejner Spring. Vaše třída jednoduše řekne kontejneru, jaké závislosti potřebuje ke spuštění, a kontejner poskytne příslušné závislosti vaší třídě za běhu.

O hře Spring MVC 5

Jarní MVC implementuje populární vzor Model-View-Controller, který jste pravděpodobně viděli v jiných webových architekturách. Vzor Model-View-Controller rozděluje obavy do tří kategorií:

  • Modelka představuje vaše doménové objekty.
  • Pohled vykreslí váš model do pohledu, například na stránku HTML.
  • Ovladač sedí mezi vaším pohledem a modelem a převádí požadavky na změny v pohledu do změn v modelu a naopak. Z praktického hlediska řadič přijímá příchozí požadavky, potenciálně aktualizuje model a odesílá objekty modelu do „zobrazení“, které se vykreslí zpět klientovi.

Na jaře MVC jsou řadiče označeny @Ovladač anotace a doprovázeno a @RequestMapping anotace. Anotace definuje sloveso HTTP (standardní příkazy HTTP jako GET, POST, PUT a DELETE) a URI, pro které bude použita metoda mapování požadavků. Jaro 4 představilo mapování požadavků na zástupce, což vše ještě usnadňuje. Použijeme tato mapování -@GetMapping, @PostMapping, @PutMapping, @PatchMapping, a @DeleteMapping--pro naši ukázkovou aplikaci.

Model na jaře MVC

Pro naši aplikaci definujeme jednoduchý objekt modelu, a Widget, uložte jej do vložené databáze H2 a vytvořte řadič pro správu widgetů. Začněme s Widget třídy, která je uvedena v seznamu 3.

$config[zx-auto] not found$config[zx-overlay] not found