Programovanie

Mastering Spring framework 5, Part 1: Spring MVC

Spring MVC je tradičná knižnica jarného rámca na vytváranie webových aplikácií Java. Je to jeden z najpopulárnejších webových rámcov na vytváranie plne funkčných webových aplikácií Java a webových služieb RESTful. V tomto tutoriáli získate prehľad o Spring MVC a naučíte sa, ako zostavovať webové aplikácie Java pomocou Spring Boot, Spring Initializr a Thymeleaf.

download Stiahnutie kódu Získajte zdrojový kód napríklad pre aplikácie v tomto výučbe. Vytvoril pre JavaWorld Steven Haines

Jarná topánka s jarnou Initializr

Našu webovú aplikáciu Spring MVC zrýchlime pomocou Spring Boot a Spring Initializr. Vzhľadom na vstup pre typ aplikácie, ktorá sa má vytvoriť, Spring Initializr používa najbežnejšie závislosti a predvolené hodnoty na nastavenie a konfiguráciu základnej aplikácie Spring Boot. Môžete tiež pridať vlastné závislosti a Spring Initializr ich zahrnie a spravuje, čím sa zabezpečí kompatibilita verzií so softvérom tretích strán a so Springom. Aplikácie Spring Boot bežia samostatne bez toho, aby ste vyžadovali poskytnutie runtime prostredia.

V tomto prípade, pretože vyvíjame webovú aplikáciu, Spring Boot automaticky zahrnie a nakonfiguruje Tomcat ako súčasť jej runtime. Aplikáciu môžeme tiež prispôsobiť pridaním databázového ovládača H2 do nášho súboru Maven POM. Spring Boot potom automaticky vytvorí vloženú databázu a Dátový zdroj inštancie v kontexte aplikácie. Po nastavení závislostí poskytne Spring Boot predvolené konfigurácie aplikácie. Konfigurácie samozrejme môžeme zmeniť, ak chceme, ale vďaka Spring Boot máme náskok: plne nakonfigurovanú a fungujúcu aplikáciu ihneď po vybalení z krabice.

Keď vyberieme a nakonfigurujeme naše závislosti, odovzdáme tieto výbery programu Spring Initializr, ktorý poskytne súbor ZIP na stiahnutie obsahujúci základný projekt Spring Boot.

Jarné MVC s databázovým strojom H2

Začneme tým, že vytvoríme základnú webovú aplikáciu Spring MVC, ktorá uchová údaje vo vloženej databáze H2.

Krok 1. Inštalácia a konfigurácia aplikácie

Prejdite na Spring Initializr na start.spring.io a vyberte Vytvorte projekt Maven pomocou Java a Spring Boot 2.0.X., kde X je najnovšia verzia Spring Boot (2.0.3 v čase písania tohto článku). Uistite sa, že ste vybrali Spring Boot 2.x, aby ste mohli implementovať Spring Web MVC 5. Spring Boot 1.4 a Spring Boot 1.5 bude implementovať Spring 4.

Zadajte názov skupiny vo formáte zodpovedajúcom vašej webovej adrese, napr com.geekcap.javaworlda zadajte názov artefaktu, napríklad spring5mvc-príklad. Obrázok 1 zobrazuje moju konfiguráciu.

Steven Haines

Ak chcete do webovej aplikácie pridať závislosti, môžete buď zadať zoznam závislostí oddelených čiarkami do Vyhľadajte závislosti textové pole alebo kliknite na Prepnúť na plnú verziu. Kliknutím na ikonu pôjdeme ľahšou cestou Prepnúť na plnú verziu. Závislosti sú rozdelené do skupín, napríklad Core, Web a Template Engines. V tomto príklade začiarknite políčka pre: Web -> Web, šablónové motory -> Thymeleaf, SQL -> JPA a SQL -> H2. Tu je to, čo každý z týchto výberov pridá do aplikácie:

  • Web: jarné MVC a Tomcat
  • Thymeleaf: Thymeleaf webový šablónový modul
  • JPA: Spring JPA, Hibernate a Spring Data
  • H2: Vstavaná databáza H2

Po dokončení kliknite na ikonu Vytvoriť projekt v dolnej časti stránky. Spring Initializr vytvorí pripravený súbor ZIP so všetkými požadovanými zdrojmi projektu, ktorý si môžete stiahnuť.

Krok 2. Importujte projekt Spring Initializr do svojho IDE

Extrahujte súbor ZIP z aplikácie Spring Initializr a potom importujte projekt do svojho obľúbeného IDE. Napríklad na importovanie projektu do IntelliJ zvoľte Súbor -> Nový projekt, ako je znázornené na obrázku 2.

Steven Haines

Krok 3. Nastavte svoj Maven POM

Ďalej prejdite na Import projektu z externého modulu, zvoliť Mavena stlačte Ďalšie. Nezabudnite zvoliť SDK projektu Java 1.8, potom stlačte Skončiť.

Štartovacia aplikácia Spring Boot

Teraz sa pozrime na štartovaciu aplikáciu Spring Boot, ktorá bola doteraz generovaná našim (minimálnym) úsilím.

Na začiatok sa v zozname 1 zobrazuje súbor Maven POM.

Zoznam 1. Maven pom.xml

   4.0.0 com.geekcap.javaworld spring5mvc-príklad 0.0.1-SNAPSHOT jar spring5mvc-príklad Demo projekt pre 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šimnite si, že súbor POM používa špeciálny nadradený POM: pružina-štartér-štartér-rodič. Nadradený POM použijeme na správu verzií všetkých našich závislostí a zaistenie kompatibility verzií. Úložiská na konci súboru POM odkazujú na jar momentka a míľnik úložiská. Potrebujeme ich, pretože Spring Boot 2.x je v čase písania tohto článku stále míľnikom.

Závislosti sú dosť minimálne a väčšina z nich je uvedená vopred štartér s pružinou:

  • spring-boot-starter-data-jpa
  • spring-boot-starter-thymeleaf
  • spring-boot-starter-web
  • test štartovacej pružiny

Každá z týchto štartovacích závislostí prináša všetky čiastkové závislosti, ktoré potrebuje. Obrázok 3 zobrazuje čiastočne rozšírený pohľad na závislosť v IntelliJ.

Steven Haines

Súbor POM obsahuje nasledujúce závislosti:

  • spring-boot-starter-data-jpa zahŕňa Hibernate a Spring Data.
  • spring-boot-starter-thymeleaf obsahuje šablónový modul Thymeleaf.
  • spring-boot-starter-web zahŕňa spring-boot-starter-tomcat, zabudovaná verzia Apache Tomcat.
  • spring-boot-starter-json zahŕňa knižnice Jackson JSON.
  • spring-web a spring-webmvc zahŕňa jarné MVC.
  • test štartovacej pružiny zahŕňa testovacie knižnice ako JUnit a Mockito.

Keď Spring Boot vidí tieto závislosti v CLASSPATH, inicializuje automatickú konfiguráciu. Napríklad keď nájde spring-boot-starter-web, vytvorí vloženú verziu Tomcatu a keď nájde H2 a spring-boot-starter-jpa vytvára vloženú databázu H2 a režim dlhodobého spánku EntityManager. Potom pripojí vodič EntityManager do jarných údajov.

Spring Boot tiež vytvára jednu triedu, ktorú je možné použiť na spustenie aplikácie. Trieda ukážkovej aplikácie je uvedená v zozname 2.

Zoznam 2. Spring5mvcExampleApplication.java

 balíček com.geekcap.javaworld.spring5mvcexample; importovať org.springframework.boot.SpringApplication; importovať org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication verejná trieda Spring5mvcExampleApplication {public static void main (String [] args) {SpringApplication.run (Spring5mvcExampleApplication.class, args); }} 

Táto trieda využíva: SpringApplication.run () metóda, absolvovanie triedy na spustenie (Spring5mvcExampleApplication v tomto príklade). The @SpringBootApplication anotácia obsahuje nasledujúce anotácie:

  • @ Konfigurácia informuje jar, že Spring5mvcExampleApplication trieda obsahuje informácie o konfigurácii. (Túto anotáciu možno použiť na vytvorenie fazule, ktorá sa zaregistruje v jarnom kontexte.)
  • @EnableAutoConfiguration povie Springovi, aby automaticky konfiguroval zdroje zo závislostí nájdených v CLASSPATH, ako sú H2 a Tomcat.
  • @ComponentScan povie Spring, aby skenovala balíčky v CLASSPATH pod aktuálnym balíkom (com.geekcap.javaworld.spring5mvcexample) pre komponenty s jarnou anotáciou, ako napr @Služba a @ Kontrolór.

Jarná skenuje CLASSPATH a automaticky vytvára komponenty, ako je vložený server Tomcat a databáza H2. Potom vyplní jarný kontext komponentmi aplikácie nachádzajúcimi sa v skenovaní balíka. Spring Boot v podstate uľahčuje výber a konfiguráciu služieb, komponentov, ovládačov, entít atď., Ktoré pre svoju aplikáciu potrebujete. Keď to urobíte, Spring ich automaticky nájde, sprístupní ich v jarnom kontexte a automaticky vytvorí všetko dohromady.

Máme nastavenie štartovacieho projektu Spring Boot a sme pripravení vyraziť. V nasledujúcej časti vytvoríme komponenty Spring MVC pre našu webovú aplikáciu Java.

Čo je jarný kontext?

The Jarný kontext je register všetkých dostupných jarných bôbov. Triedy sú identifikované ako jarné bôby ich anotáciou konkrétnymi jarnými anotáciami. Príklady zahŕňajú @Služba, ktorá identifikuje obchodnú službu, @ Kontrolór, ktorý identifikuje radič Spring MVC (t. j. vybavuje webové požiadavky), a @Entity, čo je anotácia JPA používaná na identifikáciu tried mapovaných do databázových tabuliek.

Keď sú tieto fazule anotované, musia byť zaregistrované v jarnom kontexte, čo Spring Boot robí vykonaním kontroly balíkov všetkých tried v balíkoch vo vašom projekte. Pri vytváraní jarného kontextu implementuje návrhový vzor inverzie kontroly (IoC) prostredníctvom vkladania závislostí: keď jarná fazuľa potrebuje závislosť, napríklad službu alebo úložisko, môže fazuľa buď definovať konštruktora, ktorý akceptuje závislá fazuľa alebo môže využiť @Autowired anotácia, ktorá má Jarom povedať, že túto závislosť potrebuje. Jar rieši všetky závislosti a „autowires“ aplikáciu spolu.

Dependency Injection je silný návrhový vzor, ​​pretože namiesto vytvárania a správy závislostí vo vašom kóde - ktoré môžu byť chaotické a vedú k úzko prepojeným triedam - môžete namiesto toho delegovať kontrolu na kontajner Spring. Vaša trieda jednoducho povie kontajneru, aké závislosti musí spustiť, a kontajner poskytne vašej triede za behu príslušné závislosti.

O jarnom MVC 5

Jarná MVC implementuje populárny model Model-View-Controller, ktorý ste pravdepodobne videli v iných webových rámcoch. Vzor Model-View-Controller rozdeľuje obavy do troch kategórií:

  • Model predstavuje vaše doménové objekty.
  • vyhliadka vykreslí váš model na zobrazenie, napríklad na stránku HTML.
  • Kontrolór sedí medzi vašim pohľadom a modelom a prekladá požiadavky na zmeny v pohľade na zmeny v modeli a naopak. Z praktického hľadiska riadiaca jednotka prijíma prichádzajúce požiadavky, potenciálne aktualizuje model a odosiela vaše objekty modelu do „zobrazenia“, ktoré sa vykreslí späť klientovi.

Na jar MVC sú ovládače označené symbolom @ Kontrolór anotáciu a doplnené a @RequestMapping anotácia. Anotácia definuje sloveso HTTP (štandardné príkazy HTTP ako GET, POST, PUT a DELETE) a URI, pre ktoré sa použije metóda mapovania požiadaviek. Jar 4 predstavila mapovanie žiadostí o skratky, ktoré veci ešte uľahčujú. Použijeme tieto mapovania -@GetMapping, @PostMapping, @PutMapping, @PatchMappinga @DeleteMapping--pre našu príkladnú aplikáciu.

Model na jar MVC

Pre našu aplikáciu definujeme jednoduchý objekt modelu, a Widget, uložte ho do vloženej databázy H2 a vytvorte radič na správu widgetov. Začnime s Widget triedy, ktorá je uvedená v zozname 3.

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