Čo je nové v Spring Boot 2?

1. Prehľad

Spring Boot prináša názorový prístup k jarnému ekosystému. Prvýkrát vydané v polovici roku 2014. Spring Boot prešla veľkým vývojom a vylepšením. Jeho verzia 2.0 sa dnes chystá na vydanie začiatkom roka 2018.

Existuje niekoľko oblastí, kde sa nám táto populárna knižnica snaží pomôcť:

  • Správa závislostí. Cez štartéry a rôzne integrácie správcov balíkov
  • Automatická konfigurácia. Pokus o minimalizáciu množstva konfigurácie, ktorú vyžaduje jarná aplikácia, si vyžaduje pripraviť sa na uprednostňovanie konvencií pred konfiguráciou
  • Funkcie pripravené na výrobu. Ako napr Aktuátor, lepšie protokolovanie, monitorovanie, metriky alebo rôzne integrácie PAAS
  • Vylepšené skúsenosti s vývojom. S viacerými testovacími nástrojmi alebo s lepšou spätnou väzbou spring-boot-devtools

V tomto článku preskúmame niektoré zmeny a funkcie plánované pre Spring Boot 2.0. Popíšeme tiež, ako nám tieto zmeny môžu pomôcť zvýšiť produktivitu.

2. Závislosti

2.1. Java Baseline

Spring Boot 2.x už nebude podporovať Java 7 a staršiu verziu, čo je minimálna požiadavka na Java 8.

Je to tiež prvá verzia na podporu Java 9. Vo vetve 1.x sa neplánuje podpora Java 9. To znamená Ak chcete použiť najnovšie vydanie Java a využiť výhody tohto rámca, je vašou jedinou možnosťou Spring Boot 2.x..

2.2. Kusovník

S každým novým vydaním Spring Boot sa aktualizujú verzie rôznych závislostí ekosystému Java. Toto je definované v Boote kusovník alias Kusovník.

V 2.x to nie je výnimkou. Nemá zmysel ich uvádzať, ale môžeme sa na ne pozrieť spring-boot-dependencies.pom aby ste zistili, aké verzie sa v danom okamihu používajú.

Niekoľko najdôležitejších informácií o minimálnych požadovaných verziách:

  • Minimálna podporovaná verzia Tomcat je 8,5
  • Minimálna podporovaná verzia dlhodobého spánku je 5.2
  • Minimálna podporovaná verzia programu Gradle je 3,4

2.3. Plugin Plugin

Plugin Gradle prešiel veľkým vylepšením a niektorými prelomovými zmenami.

Ak chcete vytvoriť tučné nádoby, bootRepackage Gradleho úloha bude nahradená bootJar a bootWar stavať poháre a vojny.

Ak by sme chceli spustiť naše aplikácie pomocou pluginu Gradle, v 1.x by sme mohli spustiť gradle bootRun.V 2.x bootRun rozširuje Gradle JavaExec. To znamená, že je pre nás jednoduchšie nakonfigurovať ho pomocou rovnakej konfigurácie, ktorú by sme zvyčajne používali v klasických verziách JavaExec úlohy.

Niekedy sa stretávame s tým, že chceme využiť Spring Boot BOM. Niekedy však nechceme vytvoriť úplnú aplikáciu Boot alebo ju prebaliť.

V tejto súvislosti je zaujímavé vedieť Spring Boot 2.x už predvolene nebude používať doplnok na správu závislostí.

Ak chceme správu závislostí Spring Boot, mali by sme pridať:

použiť doplnok: 'io.spring.dependency-management'

To nám dáva vyššiu flexibilitu s menšou konfiguráciou vo vyššie uvedenom scenári.

3. Automatická konfigurácia

3.1. Bezpečnosť

V 2.x sa konfigurácia zabezpečenia dramaticky zjednodušuje. V predvolenom nastavení je všetko zabezpečené, vrátane statických zdrojov a koncových bodov aktuátora.

Keď používateľ výslovne nakonfiguruje zabezpečenie, predvolené nastavenia Spring Boot prestanú mať vplyv. Používateľ potom môže nakonfigurovať všetky pravidlá prístupu na jednom mieste.

Toto nám zabráni zápasiť s WebSecurityConfigurerAdapter problémy s objednávaním. Tieto problémy sa zvyčajne stávali pri obvyklej konfigurácii bezpečnostných pravidiel Aktuátora a Aplikácie.

Pozrime sa na jednoduchý bezpečnostný úryvok, ktorý kombinuje pravidlá aktuátora a aplikácie:

http.authorizeRequests () .requestMatchers (EndpointRequest.to ("zdravie")) .permitAll () // pravidlá aktuátora pre každý koncový bod .requestMatchers (EndpointRequest.toAnyEndpoint ()) .hasRole ("admin") // všeobecné pravidlá aktuátora .requestMatchers (PathRequest.toStaticResources (). AtCommonLocations ()) .permitAll () // Statické zabezpečenie zdrojov .antMatchers ("/ **") .hasRole ("užívateľ") // Pravidlá zabezpečenia aplikácie // ...

3.2. Reaktívna podpora

Spring Boot 2 prináša sadu nových štartérov pre rôzne reaktívne moduly. Niektoré príklady sú WebFlux a reaktívne náprotivky pre MongoDB, Cassandru alebo Redis.

K dispozícii sú tiež testovacie nástroje pre WebFlux. Môžeme predovšetkým využiť výhody @WebFluxTest. Toto sa správa podobne ako staršie @WebMvcTest pôvodne predstavený ako súčasť rôznych testovaní plátky späť v 1.4.0.

4. Funkcie pripravené na výrobu

Spring Boot prináša niekoľko užitočných nástrojov, ktoré nám umožňujú vytvárať aplikácie pripravené na výrobu. Okrem iného môžeme využiť výhody Spring Boot Actuator.

Aktuátor obsahuje rôzne nástroje na zjednodušenie monitorovania, sledovania a všeobecnej prehliadky aplikácií. Ďalšie podrobnosti o servopohone nájdete v našom predchádzajúcom článku.

S jeho 2 verziou aktuátor prešiel zásadnými vylepšeniami. Táto iterácia sa zameriava na zjednodušenie prispôsobenia. Podporuje tiež ďalšie webové technológie, vrátane nového reaktívneho modulu.

4.1. Podpora technológií

V Spring Boot 1.x bol pre koncové body aktuátora podporovaný iba Spring-MVC. V 2.x sa však stal nezávislým a zapojiteľným. Spring boot teraz prináša podporu pre WebFlux, Jersey a Spring-MVC.

Rovnako ako predtým zostáva JMX možnosťou a je možné ju povoliť alebo zakázať prostredníctvom konfigurácie.

4.2. Vytváranie vlastných koncových bodov

Nová infraštruktúra pohonov je technologicky agnostická. Z tohto dôvodu bol vývojový model od základu prepracovaný.

Nový model prináša aj väčšiu flexibilitu a expresivitu.

Pozrime sa, ako vytvoriť a Ovocie koncový bod pre aktuátor:

@Endpoint (id = "ovocie") verejná trieda FruitsEndpoint {@ReadOperation verejná mapa ovocia () {...} @WriteOperation verejné neplatné addFruits (@Selector názov reťazca, ovocné ovocie) {...}}

Raz sa zaregistrujeme FruitsEndpoint v našom ApplicationContext, môže byť vystavený ako webový koncový bod pomocou nami vybranej technológie. Mohli by sme to tiež vystaviť prostredníctvom JMX v závislosti od našej konfigurácie.

Preložením nášho koncového bodu na webové koncové body by to malo za následok:

  • ZÍSKAJTE na / prihláška / ovocie vracajúce sa ovocie
  • POST na / applications / fruits / {a-fruit} nakladanie s týmto ovocím, ktoré by malo byť zahrnuté v užitočnom zaťažení

Možností je oveľa viac. Mohli by sme získať podrobnejšie údaje. Tiež by sme mohli definovať konkrétne implementácie pre každú základnú technológiu (napr. JMX vs. Web). Pre účely článku si ho ponecháme ako jednoduchý úvod bez prílišných podrobností.

4.3. Bezpečnosť v ovládači

V aplikácii Spring Boot 1.x Actuator definuje svoj vlastný bezpečnostný model. Tento model zabezpečenia sa líši od modelu používaného našou aplikáciou.

Toto bol koreň mnohých bolestivých bodov, keď sa používatelia snažili vylepšiť bezpečnosť.

V 2.x by sa konfigurácia zabezpečenia mala nakonfigurovať pomocou rovnakej konfigurácie, ktorú používa zvyšok aplikácie.

V predvolenom nastavení je väčšina koncových bodov aktuátora deaktivovaná. To nezávisí od toho, či je Spring Security v triede alebo nie. Ďalej postavenie a Info, používateľ musí povoliť všetky ostatné koncové body.

4.4. Ďalšie dôležité zmeny

  • Väčšina konfiguračných vlastností je teraz pod vedenie.xxx napr .: management.endpoints.jmx
  • Niektoré koncové body majú nový formát. napr .: env, flyway alebo Liquidibase
  • Preddefinované cesty koncových bodov už nie je možné konfigurovať

5. Vylepšené skúsenosti s vývojom

5.1. Lepšia spätná väzba

Jarná topánka predstavená devtools v 1.3.

Stará sa o vyhladenie typických problémov vývoja. Napríklad ukladanie do pamäti technológií zobrazenia. Vykonáva tiež automatické reštartovanie a živé načítanie prehľadávača. Umožňuje nám to tiež vzdialene ladiť aplikácie.

V 2.x, keď sa naša aplikácia reštartuje devtools správa „delta“ sa vytlačí. Táto správa upozorní na to, čo sa zmenilo a aký to môže mať dopad na našu aplikáciu.

Povedzme, že definujeme zdroj údajov JDBC, ktorý má prednosť pred zdrojom nakonfigurovaným pomocou Spring Boot.

Devtools bude znamenať, že ten, ktorý bol nakonfigurovaný automaticky, už nie je vytvorený. Poukáže tiež na príčinu, nepriaznivý zápas v @ConditionalOnMissingBean pre typ javax.sql.DataSource. Devtools vytlačí túto správu po vykonaní reštartu.

5.2. Prelomové zmeny

Z dôvodu problémov s JDK 9 ukončuje devtools podporu vzdialeného ladenia prostredníctvom protokolu HTTP.

6. Zhrnutie

V tomto článku sme sa venovali niektorým zmenám, ktoré Spring Boot 2 prinesie.

Diskutovali sme o závislostiach a o tom, ako sa z Java 8 stane minimálna podporovaná verzia.

Ďalej sme hovorili o automatickej konfigurácii. Zamerali sme sa okrem iného na bezpečnosť. Hovorili sme tiež o akčnom člene a mnohých vylepšeniach, ktoré dostal.

Na záver sme hovorili o niekoľkých drobných vylepšeniach, ktoré sa udiali v poskytovaných vývojových nástrojoch.


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