Što je novo u Spring Boot 2?

1. Pregled

Spring Boot donosi promišljeni pristup ekosustavu Spring. Prvo izdanje sredinom 2014. Spring Boot je prošao kroz puno razvoja i poboljšanja. Njegova verzija 2.0 danas se priprema za objavljivanje početkom 2018. godine.

Ova nam popularna knjižnica pokušava pomoći u različitim područjima:

  • Upravljanje ovisnostima. Kroz početnike i razne integracije upravitelja paketa
  • Autokonfiguracija. Pokušaj minimiziranja količine konfiguracije za koju aplikacija Spring treba da se pripremi i favorizira konvenciju u odnosu na konfiguraciju
  • Značajke spremne za proizvodnju. Kao što su Pokretač, bolja prijava, nadzor, mjerni podaci ili razne PAAS integracije
  • Poboljšano razvojno iskustvo. S višestrukim uslužnim programima za testiranje ili boljom povratnom spregom spring-boot-devtools

U ovom ćemo članku istražiti neke promjene i značajke planirane za Spring Boot 2.0. Također ćemo opisati kako bi nam ove promjene mogle pomoći da postanemo produktivniji.

2. Ovisnosti

2.1. Java osnovica

Spring Boot 2.x više neće podržavati Javu 7 i starije verzije, budući da je Java 8 minimalni zahtjev.

To je ujedno i prva verzija koja podržava Javu 9. Ne planira se podržavati Javu 9 na grani 1.x. To znači ako želite koristiti najnovije izdanje Java i iskoristiti ovaj okvir, Spring Boot 2.x je vaša jedina opcija.

2.2. Predmet materijala

Svakim novim izdanjem Spring Boota nadograđuju se verzije različitih ovisnosti Java ekosustava. To je definirano u Boot troškovnik zvani BOM.

U 2.x ovo nije iznimka. Nema smisla navoditi ih, ali možemo pogledati proljeće-čizme-ovisnosti.pom kako bi vidjeli koje se verzije koriste u bilo kojem trenutku.

Nekoliko naglasaka u vezi s minimalno potrebnim verzijama:

  • Tomcatova minimalna podržana verzija je 8,5
  • Najniža podržana verzija hibernacije je 5.2
  • Minimalna podržana verzija Gradle-a je 3.4

2.3. Dodatak Gradle

Dodatak Gradle prošao je kroz značajna poboljšanja i neke promjenjive promjene.

Da biste stvorili masne staklenke, bootRepackage Gradleov zadatak zamjenjuje se s bootJar i bootWar za izgradnju staklenki odnosno ratova.

Ako bismo htjeli pokrenuti naše aplikacije s dodatkom Gradle, u 1.x, mogli bismo izvršiti gradle bootRun.U 2.x bootRun proteže se Gradleova JavaExec. To implicira da nam je lakše konfigurirati primjenom iste konfiguracije koju bismo obično koristili u klasičnoj verziji JavaExec zadaci.

Ponekad se zateknemo kako želimo iskoristiti Spring Boot BOM. Ali ponekad ne želimo izgraditi cjelovitu aplikaciju za pokretanje ili je prepakirati.

S tim u vezi, zanimljivo je to znati Spring Boot 2.x prema zadanim postavkama više neće primjenjivati ​​dodatak za upravljanje ovisnostima.

Ako želimo upravljanje ovisnošću Spring Boot-a, trebali bismo dodati:

primijeniti dodatak: 'io.spring.dependency-management'

To nam daje veću fleksibilnost s manje konfiguracije u gore spomenutom scenariju.

3. Autokonfiguracija

3.1. Sigurnost

U 2.x sigurnosna konfiguracija postaje dramatično pojednostavljena. Prema zadanim postavkama sve je osigurano, uključujući statičke resurse i krajnje točke aktuatora.

Jednom kada korisnik eksplicitno konfigurira sigurnost, zadane postavke Spring Boot-a prestat će utjecati. Tada korisnik može konfigurirati sva pravila pristupa na jednom mjestu.

To će nas spriječiti u borbi s WebSecurityConfigurerAdapter pitanja naručivanja. Ti su se problemi obično događali prilikom prilagođavanja sigurnosnih pravila programa Actuator i App.

Pogledajmo jednostavan sigurnosni isječak koji kombinira aktuator i pravila primjene:

http.authorizeRequests () .requestMatchers (EndpointRequest.to ("health") .permitAll () // Pravila aktuatora po krajnjoj točki .requestMatchers (EndpointRequest.toAnyEndpoint ()) .hasRole ("admin") // Opća pravila aktuatora .requestMatchers (PathRequest.toStaticResources (). AtCommonLocations ()) .permitAll () // Sigurnost statičkih resursa .antMatchers ("/ **") .hasRole ("user") // Pravila sigurnosti aplikacije // ...

3.2. Reaktivna potpora

Spring Boot 2 donosi set novih pokretača za različite reaktivne module. Neki su primjeri WebFlux i reaktivni kolege za MongoDB, Cassandra ili Redis.

Tu su i test programi za WebFlux. Konkretno, možemo iskoristiti @WebFluxTest. Ovo se ponaša slično kao i stariji @WebMvcTest izvorno predstavljen kao dio različitih ispitivanja kriške natrag u 1.4.0.

4. Značajke spremne za proizvodnju

Spring Boot donosi nekoliko korisnih alata koji će nam omogućiti stvaranje aplikacija spremnih za proizvodnju. Između ostalog, možemo iskoristiti Spring Boot Actuator.

Actuator sadrži razne alate za pojednostavljivanje nadzora, praćenja i opće introspekcije aplikacija. Daljnje detalje o aktuatoru možete pronaći u našem prethodnom članku.

Sa svoje 2 verzije aktuator je prošao kroz značajna poboljšanja. Ova se iteracija usredotočuje na pojednostavljivanje prilagodbe. Podržava i druge web tehnologije, uključujući novi reaktivni modul.

4.1. Tehnološka podrška

U Spring Boot 1.x podržane su samo Spring-MVC za krajnje točke aktuatora. Međutim, u 2.xu postao je neovisan i priključiv. Spring boot sada donosi gotovu podršku za WebFlux, Jersey i Spring-MVC.

Kao i prije, JMX ostaje opcija i može se omogućiti ili onemogućiti putem konfiguracije.

4.2. Stvaranje prilagođenih krajnjih točaka

Nova infrastruktura aktuatora tehnološki je agnostična. Zbog toga je razvojni model redizajniran od nule.

Novi model također donosi veću fleksibilnost i izražajnost.

Pogledajmo kako stvoriti Voće krajnja točka za aktuator:

@Endpoint (id = "voće") javna klasa FruitsEndpoint {@ReadOperation javna karta voće () {...} @WriteOperation javna void addFruits (@Selector Naziv niza, Voće voće) {...}}

Jednom kad se registriramo FruitsEndpoint u našem ApplicationContext, može se izložiti kao web krajnja točka pomoću naše odabrane tehnologije. Mogli bismo je izložiti i putem JMX-a, ovisno o našoj konfiguraciji.

Prevođenjem naše krajnje točke na web krajnje točke, to bi rezultiralo:

  • DOBITI na / primjena / voće vraćanje voća
  • OBJAVI na / applications / voće / {a-fruit} rukovanje onim voćem koje bi trebalo biti uključeno u korisni teret

Mnogo je više mogućnosti. Mogli bismo doći do detaljnijih podataka. Također, mogli bismo definirati specifične implementacije po osnovnoj tehnologiji (npr. JMX vs. Web). U svrhu članka držat ćemo ga kao jednostavan uvod bez ulaska u previše detalja.

4.3. Sigurnost u aktuatoru

U Spring Boot 1.x Actuator definira vlastiti sigurnosni model. Ovaj se sigurnosni model razlikuje od onog koji koristi naša aplikacija.

To je bio korijen mnogih bolnih točaka kada su korisnici pokušavali poboljšati sigurnost.

U 2.x sigurnosnu konfiguraciju treba konfigurirati pomoću iste konfiguracije koju koristi ostatak aplikacije.

Prema zadanim postavkama većina krajnjih točaka aktuatora je onemogućena. To je neovisno o tome je li Spring Security u stazi predavanja ili nije. Iznad status i informacije, sve ostale krajnje točke mora omogućiti korisnik.

4.4. Ostale važne promjene

  • Većina konfiguracijskih svojstava je sada pod upravljanje.xxx npr .: upravljanje.endpoints.jmx
  • Neke krajnje točke imaju novi format. npr .: env, prelet ili liquibase
  • Unaprijed definirane staze krajnjih točaka više se ne mogu konfigurirati

5. Poboljšano razvojno iskustvo

5.1. Bolje povratne informacije

Predstavljena proljetna čizma devtools u 1.3.

Vodi računa o izravnavanju tipičnih razvojnih problema. Na primjer, predmemoriranje tehnologija pregleda. Također vrši automatsko ponovno pokretanje i ponovno učitavanje preglednika uživo. Također, omogućuje nam uklanjanje aplikacija za uklanjanje pogrešaka.

U 2.x kada našu aplikaciju ponovo pokrene devtools ispisat će se 'delta' izvješće. Ovo će izvješće ukazati na promjene i utjecaj koji bi mogao imati na našu aplikaciju.

Recimo da definiramo JDBC izvor podataka nadjačavajući onaj koji je konfigurirao Spring Boot.

Devtools označit će da onaj koji je automatski konfiguriran više nije izrađen. Također će ukazati na uzrok, nepovoljnu utakmicu u @ConditionalOnMissingBean za tip javax.sql.DataSource. Devtools ispisat će ovo izvješće nakon ponovnog pokretanja.

5.2. Kršenje promjena

Zbog problema s JDK 9, devtools odustaje od podrške za daljinsko ispravljanje pogrešaka putem HTTP-a.

6. Sažetak

U ovom smo članku pokrili neke promjene koje će donijeti Spring Boot 2.

Razgovarali smo o ovisnostima i o tome kako Java 8 postaje minimalno podržana verzija.

Dalje smo razgovarali o autokonfiguraciji. Među ostalim smo se usredotočili na sigurnost. Također smo razgovarali o aktuatoru i mnogim poboljšanjima koja je dobio.

Na kraju, razgovarali smo o nekim manjim izmjenama koje su se dogodile u predviđenim razvojnim alatima.