Programiranje

Obvladovanje vzmetnega okvira 5, 1. del: Spring MVC

Spring MVC je tradicionalna knjižnica Spring framework za izdelavo spletnih aplikacij Java. Je eden najbolj priljubljenih spletnih okvirov za izdelavo popolnoma funkcionalnih spletnih aplikacij Java in spletnih storitev RESTful. V tej vadnici boste dobili pregled Spring MVC in se naučili, kako zgraditi spletne programe Java s pomočjo Spring Boot, Spring Initializr in Thymeleaf.

prenos Prenesite kodo Pridobite izvorno kodo, na primer aplikacije v tej vadnici. Ustvaril za JavaWorld Steven Haines

Spring Boot z Spring Initializr

Našo spletno aplikacijo Spring MVC bomo pospravili s pomočjo Spring Boot in Spring Initializr. Glede na vhodne podatke za vrsto aplikacije, ki jo želite zgraditi, Spring Initializr uporablja najpogostejše odvisnosti in privzete nastavitve za nastavitev in konfiguriranje osnovne aplikacije Spring Boot. Prav tako lahko dodate odvisnosti po meri in Spring Initializr jih bo vključeval in upravljal, kar zagotavlja združljivost različic tako s programsko opremo drugih proizvajalcev kot s Springom. Aplikacije Spring Boot se izvajajo samostojno, ne da bi vam bilo treba zagotoviti okolje za izvajanje.

Ker v tem primeru gradimo spletno aplikacijo, bo Spring Boot samodejno vključil in konfiguriral Tomcat kot del časa izvajanja aplikacije. Aplikacijo lahko prilagodimo tudi tako, da v datoteko Maven POM dodamo gonilnik baze podatkov H2. Nato bo Spring Boot samodejno ustvaril vdelano bazo podatkov in Vir podatkov primera v kontekstu aplikacije. Ko so odvisnosti nastavljene, bo Spring Boot zagotovil privzete konfiguracije za aplikacijo. Seveda lahko konfiguracije spremenimo, če želimo, toda zahvaljujoč Spring Boot-u imamo glavo: popolnoma konfigurirano, delujočo aplikacijo že takoj.

Ko izberemo in konfiguriramo odvisnosti, jih bomo poslali Spring Initializr, ki bo zagotovil naložljivo datoteko ZIP, ki vsebuje osnovni projekt Spring Boot.

Vzmetni MVC z mehanizmom baze podatkov H2

Začeli bomo z izdelavo osnovne spletne aplikacije Spring MVC, ki ohranja podatke v vdelani bazi podatkov H2.

Korak 1. Nastavite in konfigurirajte aplikacijo

Pojdite na Spring Initializr na start.spring.io in izberite Ustvarite projekt Maven z Javo in Spring Boot 2.0.X, kjer je X najnovejša različica Spring Boot (2.0.3 v času pisanja tega dokumenta). Prepričajte se, da ste izbrali Spring Boot 2.x, da boste lahko implementirali Spring Web MVC 5. Spring Boot 1.4 in Spring Boot 1.5 bosta implementirala Spring 4.

Vnesite ime skupine z obliko, ki se ujema z vašim spletnim naslovom, na primer com.geekcap.javaworldin vnesite ime artefakta, na primer vzmet5mvc-primer. Slika 1 prikazuje mojo konfiguracijo.

Steven Haines

Če želite v spletno aplikacijo dodati odvisnosti, lahko v sistem vnesete seznam odvisnosti, ločenih z vejicami Poiščite odvisnosti besedilno polje ali kliknite Preklopite na polno različico. S klikom na bomo ubrali lažjo pot Preklopite na polno različico. Odvisnosti so razdeljene v skupine, kot so Core, Web in Template Engines. V tem primeru izberite potrditvena polja za: Splet -> Splet, predloge motorjev -> Thymeleaf, SQL -> JPA in SQL -> H2. Tukaj je tisto, kar bo vsak od teh izbir dodal v aplikacijo:

  • Splet: Spring MVC in Tomcat
  • Thymeleaf: motor spletne predloge Thymeleaf
  • JPA: spomladanski JPA, prezimovanje in spomladanski podatki
  • H2: Vdelana baza podatkov H2

Ko končate, kliknite Ustvari projekt na dnu strani. Spring Initializr bo ustvaril že pripravljeno datoteko ZIP z vsemi zahtevanimi projektnimi viri, ki jo lahko prenesete.

Korak 2. Uvozite projekt Spring Initializr v svoj IDE

Izvlecite datoteko ZIP iz programa Spring Initializr in nato uvozite projekt v svoj najljubši IDE. Na primer, če želite uvoziti projekt v IntelliJ, izberite Datoteka -> Nov projekt, kot je prikazano na sliki 2.

Steven Haines

Korak 3. Nastavite svoj Maven POM

Nato se pomaknite do Uvoz projekta iz zunanjega modula, izberite Mavenin pritisnite Naslednji. Prepričajte se, da ste izbrali projektni paket za razvoj programske opreme Java 1.8, nato pritisnite Končaj.

Začetna aplikacija Spring Boot

Zdaj pa si oglejmo zaganjalnik Spring Boot, ki je bil ustvarjen z našimi (minimalnimi) prizadevanji do zdaj.

Za začetek je v seznamu 1 prikazana datoteka Maven POM.

Seznam 1. Maven pom.xml

   4.0.0 com.geekcap.javaworld spring5mvc-primer 0.0.1-SNAPSHOT jar spring5mvc-example Predstavitveni projekt za Spring Boot org.springframework.boot spring-boot-starter-parent 2.0.3. SPROŠČANJE 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 

Upoštevajte, da datoteka POM uporablja poseben nadrejeni POM: spring-boot-starter-starš. Nadrejeni POM bomo uporabili za upravljanje različic vseh naših odvisnosti in zagotovitev združljivosti različic. Skladišča na koncu datoteke POM se sklicujejo na pomlad posnetek in mejnik skladišča. Te potrebujemo, ker je Spring Boot 2.x v času pisanja tega dokumenta še vedno mejnik.

Odvisnosti so precej minimalne in večina je vnaprej pripravljena vzmetno-zagonski zaganjalnik:

  • spring-boot-starter-data-jpa
  • vzmetni-zagonski-zaganjalnik-timijan
  • spring-boot-starter-web
  • test vzmetnega zagona-zaganjalnika

Vsaka od teh zaganjalnih odvisnosti prinese vse potrebne odvisnosti. Slika 3 prikazuje delno razširjen pogled odvisnosti v programu IntelliJ.

Steven Haines

Datoteka POM vključuje naslednje odvisnosti:

  • spring-boot-starter-data-jpa vključuje stanje mirovanja in spomladi.
  • vzmetni zagon-zaganjalnik-timijan vključuje mehanizem za predloge Thymeleaf.
  • spring-boot-starter-web vključuje pomlad-boot-starter-tomcat, vdelana različica Apache Tomcat.
  • spring-boot-starter-json vključuje knjižnice Jackson JSON.
  • spring-web in spring-webmvc vključuje Spring MVC.
  • test vzmetnega zagona-zaganjalnika vključuje preizkusne knjižnice, kot sta JUnit in Mockito.

Ko Spring Boot vidi te odvisnosti v CLASSPATH, sproži samodejno konfiguracijo. Na primer, ko najde spring-boot-starter-web, ustvari vdelano različico programa Tomcat in ko najde H2 in spring-boot-starter-jpa ustvari vdelano bazo podatkov H2 in mirovanje EntityManager. Nato ožiči EntityManager v spomladanske podatke.

Spring Boot ustvari tudi en razred, ki ga lahko uporabite za zagon aplikacije. Razred za primer aplikacije je prikazan v seznamu 2.

Seznam 2. Spring5mvcExampleApplication.java

 paket com.geekcap.javaworld.spring5mvcexample; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication javni razred Spring5mvcExampleApplication {public static void main (String [] args) {SpringApplication.run (Spring5mvcExampleApplication.class, args); }} 

Ta razred uporablja SpringApplication.run () metoda, podajanje v razred za zagon (Spring5mvcExampleApplication v tem primeru). The @SpringBootApplication Pripis vključuje naslednje pripise:

  • @ Konfiguracija obvešča Spring, da Spring5mvcExampleApplication razred vsebuje informacije o konfiguraciji. (Ta pripis lahko uporabite za ustvarjanje fižolov, ki se bodo registrirali v pomladnem kontekstu.)
  • @EnableAutoConfiguration pove Spring, naj samodejno konfigurira vire iz odvisnosti, najdenih v CLASSPATH, kot sta H2 in Tomcat.
  • @ComponentScan pove Spring, naj skenira pakete v CLASSPATH pod trenutnim paketom (com.geekcap.javaworld.spring5mvceample) za vzmetno označene komponente, kot je @Service in @Controller.

Spring skenira CLASSPATH in samodejno ustvari komponente, kot sta vdelani strežnik Tomcat in baza podatkov H2. Nato zapolni kontekst Spring s komponentami aplikacije, ki jih najdete v skeniranju paketov. V bistvu Spring Boot omogoča zelo enostavno izbiro in konfiguriranje storitev, komponent, krmilnikov, entitet itd., Ki jih potrebujete za svojo aplikacijo. Ko to storite, jih bo Spring samodejno našel, dal na voljo v kontekstu Spring in samodejno povezal vse skupaj.

Pripravili smo začetni projekt Spring Boot in smo pripravljeni za uporabo. V naslednjem razdelku bomo ustvarili komponente Spring MVC za našo spletno aplikacijo Java.

Kaj je pomladni kontekst?

The Pomladni kontekst je register vseh razpoložljivih spomladanskih zrn. Razredi so označeni kot spomladanski fižol tako, da jih označijo s posebnimi spomladanskimi pripisi. Primeri vključujejo @Service, ki opredeljuje poslovno storitev, @Controller, ki identificira krmilnik Spring MVC (tj. obravnava spletne zahteve) in @Entiteta, ki je pripis JPA, ki se uporablja za identifikacijo razredov, ki so preslikani v tabele baz podatkov.

Ko so ti fižoli označeni, jih je treba registrirati v kontekstu Spring, kar Spring Boot naredi tako, da opravi skeniranje paketov vseh razredov v paketih v vašem projektu. Ko se gradi kontekst Spring, implementira vzorec načrtovanja inverzije nadzora (IoC) z vbrizganjem odvisnosti: ko je zrno Spring potrebno odvisnost, kot je storitev ali repozitorij, lahko fižol definira konstruktor, ki sprejme odvisen fižol ali pa lahko izkoristi @Autowired pripomba, da Spring pove, da potrebuje to odvisnost. Spring rešuje vse odvisnosti in "samodejno poveže" aplikacijo skupaj.

Vbrizgavanje odvisnosti je močan vzorec načrtovanja, saj lahko namesto ustvarjanja in upravljanja odvisnosti znotraj kode - ki je lahko neurejena in vodi do tesno povezanih razredov - nadzor prenesete na vsebnik Spring. Vaš razred preprosto pove vsebniku, katere odvisnosti mora zagnati, vsebnik pa med izvajanjem zagotovi ustrezne odvisnosti za vaš razred.

O Spring MVC 5

Spring MVC izvaja priljubljeni vzorec Model-View-Controller, ki ste ga verjetno že videli v drugih spletnih okoljih. Vzorec Model-View-Controller ločuje pomisleke v tri kategorije:

  • Model predstavlja predmete vaše domene.
  • Pogled upodablja vaš model v pogled, na primer na stran HTML.
  • Krmilnik sedi med vašim pogledom in modelom ter pretvori zahteve za spremembe v pogledu v spremembe v modelu in obratno. Praktično krmilnik sprejme dohodne zahteve, potencialno posodobi model in pošlje vaše predmete modela v "pogled", da jih znova upodobi odjemalcu.

V spomladanskem MVC krmilnike označuje @Controller pripis in spremlja a @RequestMapping pripis. Pripis opredeljuje glagol HTTP (standardni ukazi HTTP, kot so GET, POST, PUT in DELETE) in URI, za katere bo uporabljena metoda preslikave zahtev. Spring 4 je predstavil preslikave zahtev za bližnjice, ki stvari še olajšajo. Uporabili bomo ta preslikava--@GetMapping, @PostMapping, @PutMapping, @PatchMapping, in @DeleteMapping--za naš primer aplikacije.

Model spomladi MVC

Za našo aplikacijo bomo opredelili preprost modelni objekt, a Pripomoček, shranite ga v vdelano bazo podatkov H2 in zgradite krmilnik za upravljanje pripomočkov. Začnimo z Pripomoček razred, ki je prikazan na seznamu 3.

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