„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 HainesasPavasario 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.javaworld
ir įveskite dirbinio pavadinimą, pvz., spring5mvc-pavyzdys
. 1 paveiksle parodyta mano konfigūracija.

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.

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“.

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“
apimapavasaris-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, kadPavasaris5mvcExampleApplication
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
, @PatchMapping
ir @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.