Programavimas

„Spring framework 5“ įvaldymas, 1 dalis: „Spring MVC“

„Spring MVC“ yra tradicinė „Spring Framework“ biblioteka, skirta kurti „Java“ žiniatinklio programas. Tai yra viena iš populiariausių žiniatinklio struktūrų, skirtų kurti visiškai veikiančias „Java“ žiniatinklio programas ir „RESTful“ interneto paslaugas. Šioje pamokoje gausite „Spring MVC“ apžvalgą ir sužinosite, kaip kurti „Java“ žiniatinklio programas naudojant „Spring Boot“, „Spring Initializr“ ir „Thymeleaf“.

atsisiųsti Atsisiųskite kodą Gaukite šios mokymo programos, pvz., programų, šaltinio kodą. „JavaWorld“ sukūrė Stevenas Hainesas

Pavasario batas su pavasario Initializr

Greitai sukursime savo „Spring MVC“ internetinę programą naudodami „Spring Boot“ ir „Spring Initializr“. Atsižvelgiant į kuriamos programos tipo įvestį, „Spring Initializr“ naudoja dažniausiai pasitaikančias priklausomybes ir numatytuosius nustatymus pagrindinei „Spring Boot“ programai nustatyti ir sukonfigūruoti. Taip pat galite pridėti pasirinktinių priklausomybių, o „Spring Initializr“ jas įtrauks ir valdys, užtikrindamas versijų suderinamumą tiek su trečiųjų šalių programine įranga, tiek su „Spring“. „Spring Boot“ programos veikia atskirai, nereikalaujant, kad pateiktų vykdymo laiko aplinką.

Šiuo atveju, kadangi mes kuriame žiniatinklio programą, „Spring Boot“ automatiškai įtraukia ir sukonfigūruos „Tomcat“ kaip programos vykdymo laiką. Taip pat galime pritaikyti programą pridėdami H2 duomenų bazės tvarkyklę prie mūsų „Maven POM“ failo. Tada „Spring Boot“ automatiškai sukurs įterptą duomenų bazę ir Duomenų šaltinis pavyzdys programos kontekste. Nustačius priklausomybes, „Spring Boot“ pateiks numatytąsias programos konfigūracijas. Aišku, jei norime, galime pakeisti konfigūracijas, tačiau „Spring Boot“ dėka mes turime pagrindinį žingsnį: visiškai sukonfigūruotą, veikiančią programą iš karto.

Pasirinkę ir sukonfigūravę savo priklausomybes, mes juos perduosime „Spring Initializr“, kuris pateiks atsisiunčiamą ZIP failą, kuriame yra pagrindinis „Spring Boot“ projektas.

Pavasario MVC su H2 duomenų bazės varikliu

Pirmiausia sukursime pagrindinę „Spring MVC“ žiniatinklio programą, kuri išlaiko duomenis į įterptą H2 duomenų bazę.

1 žingsnis. Nustatykite ir sukonfigūruokite programą

Eikite į „Spring Initializr“ adresu pradžia.pavasaris.io ir pasirinkite Sukurkite „Maven“ projektą naudodami „Java“ ir „Spring Boot 2.0.X“, kur X yra naujausia „Spring Boot“ versija (2.0.3 šio rašymo metu). Įsitikinkite, kad pasirinkote „Spring Boot 2.x“, kad galėtumėte įdiegti „Spring Web MVC 5“. „Spring Boot 1.4“ ir „Spring Boot 1.5“ įdiegs 4 pavasarį.

Įveskite grupės pavadinimą tokiu formatu, kuris atitiktų jūsų žiniatinklio adresą, pvz com.geekcap.javaworldir įveskite dirbinio pavadinimą, pvz., spring5mvc-pavyzdys. 1 paveiksle parodyta mano konfigūracija.

Stevenas Hainesas

Norėdami pridėti priklausomybių prie žiniatinklio programos, galite įvesti kableliais atskirtą priklausomybių sąrašą Ieškokite priklausomybių teksto lauką arba spustelėkite Perjunkite į pilną versiją. Mes eisime lengvesniu keliu spustelėdami Perjunkite į pilną versiją. Priklausomybės skirstomos į grupes, tokias kaip „Core“, „Web“ ir „Template Engines“. Šiame pavyzdyje pažymėkite žymimuosius laukelius: Žiniatinklis -> žiniatinklis, šabloniniai varikliai -> „Thymeleaf“, SQL -> JPA ir SQL -> H2. Štai ką kiekvienas iš šių pasirinkimų pridės prie programos:

  • Žiniatinklis: pavasario MVC ir „Tomcat“
  • „Thymeleaf“: „Thymeleaf“ žiniatinklio šablonų variklis
  • JPA: pavasario JPA, užmigdymo ir pavasario duomenys
  • H2: H2 įterptoji duomenų bazė

Baigę spustelėkite Generuoti projektą mygtuką puslapio apačioje. „Spring Initializr“ sukurs parengtą ZIP failą su visais reikalingais projekto šaltiniais, kuriuos galėsite atsisiųsti.

2 žingsnis. Importuokite „Spring Initializr“ projektą į savo IDE

Ištraukite ZIP failą iš „Spring Initializr“, tada importuokite projektą į savo mėgstamą IDE. Pavyzdžiui, jei norite importuoti projektą į „IntelliJ“, pasirinkite Failas -> Naujas projektas, kaip parodyta 2 paveiksle.

Stevenas Hainesas

3 žingsnis. Nustatykite „Maven POM“

Tada eikite į Importuoti projektą iš išorinio modulio, pasirinkite Mavenasir paspauskite Kitas. Būtinai pasirinkite „Java 1.8“ projekto SDK, tada paspauskite Baigti.

„Spring Boot“ starterio programa

Dabar pažvelkime į „Spring Boot“ starterio programą, kurią iki šiol sugeneravome (minimaliomis) pastangomis.

Norėdami pradėti, 1 sąraše rodomas „Maven POM“ failas.

Sąrašas 1. Maven pom.xml

   4.0.0 com.geekcap.javaworld spring5mvc-example 0.0.1-SNAPSHOT jar spring5mvc-example Demonstracinis projektas „Spring Boot“ org.springframework.boot spring-boot-starter-parent 2.0.3. IŠLEIDIMAS 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 testas org.springframework.boot spring-boot-maven-plugin 

Atkreipkite dėmesį, kad POM faile naudojamas specialus pagrindinis POM: pavasaris-pradinis-starteris-tėvas. Mes naudosime pagrindinį POM, kad galėtume valdyti visų savo priklausomybių versijas ir užtikrinti, kad versijos būtų suderinamos. POM bylos pabaigoje esančios saugyklos nurodo pavasarį momentinė nuotrauka ir etapas saugyklos. Mums jų reikia, nes „Spring Boot 2.x“ vis dar yra svarbus įvykis šio rašymo metu.

Priklausomybės yra gana minimalios, ir dauguma jų yra įvestos spyruoklinis-startinis starteris:

  • spring-boot-starter-data-jpa
  • pavasaris-batas-starteris-timpa
  • „spring-boot-starter-web“
  • pavasario-įkrovos-starterio-testas

Kiekviena iš šių priklausomybių nuo starterio atneša visas jai reikalingas papildomas priklausomybes. 3 paveiksle parodytas iš dalies išplėstas priklausomybės vaizdas „IntelliJ“.

Stevenas Hainesas

POM faile yra šios priklausomybės:

  • spring-boot-starter-data-jpa apima užmigdymo ir pavasario duomenis.
  • pavasaris-bagažinė-starteris-timpa apima „Thymeleaf“ šablonų variklį.
  • „spring-boot-starter-web“ apima pavasaris-batas-starteris-runas, įdėta „Apache Tomcat“ versija.
  • spring-boot-starter-json apima Jackson JSON bibliotekas.
  • pavasaris-internetas ir pavasaris-webmvc apima pavasario MVC.
  • pavasario-įkrovos-starterio-testas apima tokių bibliotekų kaip „JUnit“ ir „Mockito“ testavimą.

Kai „Spring Boot“ mato šias priklausomybes CLASSPATH, ji inicijuoja automatinę konfigūraciją. Pavyzdžiui, kai randa „spring-boot-starter-web“, jis sukuria įterptą „Tomcat“ versiją ir radęs H2 ir spring-boot-starter-jpa sukuriama H2 įterptoji duomenų bazė ir užmigdymo būsena „EntityManager“. Tada jis laidus „EntityManager“ į „Spring Data“.

„Spring Boot“ taip pat sukuria vieną klasę, kurią galima naudoti programai paleisti. Programos pavyzdžio klasė rodoma 2 sąraše.

Sąrašas 2. Spring5mvcExampleApplication.java

 paketas com.geekcap.javaworld.spring5mvcexample; importuoti org.springframework.boot.SpringApplication; importuoti org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication viešoji klasė Spring5mvcExampleApplication {public static void main (String [] args) {SpringApplication.run (Spring5mvcExampleApplication.class, args); }} 

Ši klasė išnaudoja SpringApplication.run () metodas, perduodamas klasėje bėgti (Pavasaris5mvcExampleApplication šiame pavyzdyje). @SpringBootApplication anotacijoje yra šios anotacijos:

  • @Konfigūracija praneša pavasariui, kad Pavasaris5mvcExampleApplication klasėje yra konfigūracijos informacija. (Ši anotacija gali būti naudojama kuriant pupeles, kurios bus užregistruotos pavasario kontekste.)
  • @EnableAutoConfiguration liepia Springui automatiškai konfigūruoti išteklius iš CLASSPATH rastų priklausomybių, tokių kaip H2 ir Tomcat.
  • @ComponentScan liepia Springui nuskaityti paketus pagal dabartinį paketą CLASSPATH (com.geekcap.javaworld.spring5mvcexample) pavasarį komentuojamiems komponentams, tokiems kaip @Service ir @Valdytojas.

„Spring“ nuskaito „CLASSPATH“ ir automatiškai sukuria tokius komponentus kaip įterptasis „Tomcat“ serveris ir H2 duomenų bazė. Tada jis užpildo pavasario kontekstą su programų komponentais, esančiais paketų nuskaitymo metu. Iš esmės „Spring Boot“ leidžia labai lengvai pasirinkti ir konfigūruoti jūsų programai reikalingas paslaugas, komponentus, valdiklius, objektus ir kt. Kai tai padarysite, „Spring“ automatiškai suras juos, padarys juos prieinamus „Spring“ kontekste ir viską užpildys kartu.

Mes turime „Spring Boot“ starterio projekto sąranką ir esame pasirengę pradėti. Kitame skyriuje sukursime pavasario MVC komponentus savo „Java“ žiniatinklio programai.

Koks yra pavasario kontekstas?

Pavasario kontekstas yra visų turimų vasarinių pupelių registras. Klasės yra identifikuojamos kaip vasarinės pupelės, jas pažymint konkrečiomis pavasario anotacijomis. Pavyzdžiai: @Service, nurodanti verslo paslaugą, @Valdytojas, kuris identifikuoja pavasario MVC valdiklį (t. y. tvarko žiniatinklio užklausas) ir @Entity, kuri yra JPA anotacija, naudojama klasėms, susietoms su duomenų bazės lentelėmis, identifikuoti.

Kai šios pupelės yra anotuotos, jas reikia užregistruoti „Spring“ kontekste, kurį „Spring Boot“ atlieka atlikdama visų jūsų paketų klasių paketų nuskaitymą. Kuriant „Spring“ kontekstą, jis įgyvendina valdymo inversijos (IoC) dizaino modelį per priklausomybės injekciją: kai pavasario pupelėms reikia priklausomybės, tokios kaip paslauga ar saugykla, pupelė gali arba apibrėžti konstruktorių, kuris priima priklausomas pupelis arba jis gali panaudoti @Autowired anotacija pasakyti pavasariui, kad jai reikia šios priklausomybės. Pavasaris išsprendžia visas priklausomybes ir „įrašo“ programą kartu.

Priklausomybės įpurškimas yra galingas dizaino modelis, nes užuot sukūrę ir valdę priklausomybes kodo viduje, o tai gali būti netvarkinga ir veda prie glaudžiai sujungtų klasių, galite perduoti valdymą „Spring“ konteineriui. Jūsų klasė tiesiog nurodo konteineriui, kokias priklausomybes jis turi paleisti, o sudėtinis rodinys pateikia tinkamas priklausomybes jūsų klasei vykdymo metu.

Apie pavasario MVC 5

„Spring MVC“ įgyvendina populiarų „Model-View-Controller“ modelį, kurį tikriausiai matėte kitose žiniatinklio sistemose. „Model-View-Controller“ modelis rūpesčius išskiria į tris kategorijas:

  • Modelis reiškia jūsų domeno objektus.
  • Vaizdas pateikia jūsų modelį rodinyje, pvz., HTML puslapyje.
  • Valdiklis sėdi tarp jūsų rodinio ir modelio ir peržiūri pakeitimo užklausas rodinyje į modelio pakeitimus ir atvirkščiai. Praktiškai valdiklis priima gaunamas užklausas, galbūt atnaujina modelį ir siunčia jūsų modelio objektus į „rodinį“, kad jie būtų pateikti klientui.

Pavasario MVC valdikliai identifikuojami pagal @Valdytojas anotacija ir kartu su a @RequestMapping anotacija. Anotacija apibrėžia HTTP veiksmažodį (standartines HTTP komandas, tokias kaip GET, POST, PUT ir DELETE) ir URI, kuriems bus taikomas užklausų susiejimo metodas. 4 pavasaris pristatė nuorodų užklausų susiejimus, kurie dar labiau palengvina. Mes naudosime šiuos susiejimus -@GetMapping, @PostMapping, @PutMapping, @PatchMappingir @DeleteMapping- mūsų pavyzdinei programai.

Pavasario MVC modelis

Savo programai apibrėžsime paprastą modelio objektą, a Valdiklis, saugokite jį įterptoje H2 duomenų bazėje ir sukurkite valdiklį valdikliams valdyti. Pradėkime nuo Valdiklis klasė, kuri parodyta 3 sąraše.