Úvod do aplikácie Dropwizard

Java Top

Práve som oznámil nové Naučte sa jar kurz zameraný na základy jari 5 a Spring Boot 2:

>> SKONTROLUJTE KURZ

1. Prehľad

Dropwizard je open-source framework Java používaný na rýchly vývoj vysoko výkonných webových služieb RESTful. Zhromažďuje niektoré populárne knižnice, aby vytvorili ľahký balík. Hlavné knižnice, ktoré používa, sú Jetty, Jersey, Jackson, JUnit a Guava. Ďalej používa vlastnú knižnicu s názvom Metrics.

V tomto tutoriále sa dozvieme, ako nakonfigurovať a spustiť jednoduchú aplikáciu Dropwizard. Keď skončíme, naša aplikácia vystaví RESTful API, ktoré nám umožní získať zoznam uložených značiek.

2. Maven závislosti

Po prvé, dropwizard-core závislosť je všetko, čo potrebujeme, aby sme mohli vytvoriť našu službu. Pridajme to k nášmu pom.xml:

 io.dropwizard dropwizard-core 2.0.0 

3. Konfigurácia

Teraz vytvoríme potrebné triedy, ktoré sú potrebné na spustenie každej aplikácie Dropwizard.

Aplikácie Dropwizard ukladajú vlastnosti do súborov YML. Preto vytvoríme úvod-konfigur.yml súbor v adresári zdrojov:

defaultSize: 5

K hodnotám v tomto súbore môžeme získať vytvorením rozšírenej triedy io.dropwizard.Configuration:

verejná trieda BasicConfiguration rozširuje konfiguráciu {@NotNull private final int defaultSize; @JsonCreator public BasicConfiguration (@JsonProperty ("defaultSize") int defaultSize) {this.defaultSize = defaultSize; } public int getDefaultSize () {return defaultSize; }}

Dropwizard používa Jacksona na deserializáciu konfiguračného súboru do našej triedy. Preto sme použili Jacksonove anotácie.

Ďalej vytvoríme hlavnú triedu aplikácií, ktorá je zodpovedná za prípravu našej služby na použitie:

public class IntroductionApplication extends Application {public static void main (String [] args) throws Exception {new IntroductionApplication (). run ("server", "Introduction-config.yml"); } @Override public void run (BasicConfiguration basicConfiguration, Environment environment) {// register classes} @Override public void initialize (Bootstrap bootstrap) {bootstrap.setConfigurationSourceProvider (new ResourceConfigurationSourceProvider ()); super.initialize (bootstrap); }}

Po prvé, hlavný za spustenie aplikácie zodpovedá táto metóda. Mohli by sme prejsť okolo args do bežať metódou alebo ju vyplníme sami.

Prvý argument môže byť buď server alebo skontrolovať. The skontrolovať voľba overí konfiguráciu, zatiaľ čo server možnosť spustí aplikáciu. Druhým argumentom je umiestnenie konfiguračného súboru.

Ďalej inicializovať metóda nastaví poskytovateľa konfigurácie na ResourceConfigurationSourceProvider, ktorá umožňuje aplikácii nájsť daný konfiguračný súbor v adresári zdrojov. Nie je povinné prepísať túto metódu.

A nakoniec bežať metóda nám umožňuje prístup k Životné prostredie a BaseConfiguration, ktoré použijeme ďalej v tomto článku.

4. Zdroj

Najskôr vytvorme triedu domény pre našu značku:

public class Značka {private final Long id; súkromné ​​konečné meno reťazca; // all args constructor and getters}

Po druhé, vytvorme a Úložisko značiek trieda, ktorá bude zodpovedná za vrátenie značiek:

public class BrandRepository {private final List brand; public BrandRepository (zoznam značiek) {this.brands = ImmutableList.copyOf (značky); } public List findAll (int size) {return brands.stream () .limit (size) .collect (Collectors.toList ()); } public Voliteľné findById (Long id) {návrat brands.stream () .filter (brand -> brand.getId (). equals (id)) .findFirst (); }}

Navyše, mohli sme použiť ImmutableList z Guavy, pretože je súčasťou samotného Dropwizard.

Po tretie, vytvoríme a BrandResource trieda. Dropwizard štandardne používa JAX-RS s implementáciou Jersey. Preto použijeme anotácie z tejto špecifikácie na odhalenie našich koncových bodov REST API:

@Path ("/ brands") @Produces (MediaType.APPLICATION_JSON) verejná trieda BrandResource {private final int defaultSize; súkromné ​​konečné BrandRepository brandRepository; public BrandResource (int defaultSize, BrandRepository brandRepository) {this.defaultSize = defaultSize; this.brandRepository = brandRepository; } @GET public List getBrands (@QueryParam ("size") Optional size) {return brandRepository.findAll (size.orElse (defaultSize)); } @GET @Path ("/ {id}") public Brand getById (@PathParam ("id") Long id) {return brandRepository .findById (id) .orElseThrow (RuntimeException :: new); }}

Ďalej sme definovali veľkosť ako Voliteľné za účelom použitia defaultSize z našej konfigurácie, ak argument nie je uvedený.

Nakoniec sa zaregistrujeme BrandResource v Úvod Aplikácia trieda. Aby sme to dosiahli, implementujme bežať metóda:

@Override public void run (BasicConfiguration basicConfiguration, prostredie prostredia) {int defaultSize = basicConfiguration.getDefaultSize (); BrandRepository brandRepository = nový BrandRepository (initBrands ()); BrandResource brandResource = nový BrandResource (defaultSize, brandRepository); prostredie .jersey () .register (brandResource); }

Týmto spôsobom by sa mali registrovať všetky vytvorené zdroje.

5. Spustená aplikácia

V tejto časti sa dozvieme, ako spustiť aplikáciu z príkazového riadku.

Najskôr nakonfigurujeme náš projekt tak, aby vytvoril súbor JAR pomocou maven-shad-plugin:

 org.apache.maven.plugins maven-shad-plugin true *: * META-INF / *. SF META-INF / *. DSA META-INF / *. RSA balíček odtieň com.baeldung.dropwizard.introduction.IntroductionApplication 

Toto je navrhovaná konfigurácia doplnku. Ďalej sme zahrnuli cestu do našej hlavnej triedy v element.

Nakoniec vytvoríme aplikáciu s Mavenom. Keď máme súbor JAR, môžeme spustiť aplikáciu:

java -jar target / dropwizard-0.0.1-SNAPSHOT.jar

Je tu nie je potrebné zadávať parametre, pretože sme ich už zahrnuli do súboru ÚvodAplikácia trieda.

Potom by sa mal protokol konzoly skončiť:

INFO [2020-01-08 18: 55: 06,527] org.eclipse.jetty.server. Server: Spustené pri 1672ms

Aplikácia teraz počúva na porte 8080 a my môžeme pristupovať k nášmu koncovému bodu značky na // localhost: 8080 / značiek.

6. Kontrola stavu

Pri spustení aplikácie sme boli informovaní, že aplikácia nemá žiadne zdravotné kontroly. Našťastie Dropwizard poskytuje jednoduché riešenie na doplnenie kontrol stavu do našej aplikácie.

Začnime pridaním jednoduchej triedy, ktorá sa rozširuje com.codahale.metrics.health.HealthCheck:

verejná trieda ApplicationHealthCheck rozširuje HealthCheck {@Override chránený Výsledok check () vyvolá Výnimku {návrat Result.healthy (); }}

Táto jednoduchá metóda vráti informácie o zdravotnom stave našej zložky. Mohli by sme vytvoriť viac zdravotných kontrol a niektoré z nich by mohli v určitých situáciách zlyhať. Napríklad by sme sa vrátili Výsledok.nezdravý () ak pripojenie k databáze zlyhalo.

Nakoniec musíme zaregistrujte našu kontrolu zdravotného stavu v bežať metóda našej ÚvodAplikácia trieda:

prostredie .healthChecks () .register ("aplikácia", nová ApplicationHealthCheck ());

Po spustení aplikácie môžeme skontrolovať odpoveď na kontrolu zdravotného stavu pod // localhost: 8081 / healthcheck:

{"application": {"healthy": true, "duration": 0}, "deadlocks": {"healthy": true, "duration": 0}}

Ako vidíme, naša kontrola stavu bola zaregistrovaná pod žiadosť značka.

7. Záver

V tomto článku sme sa naučili, ako nastaviť aplikáciu Dropwizard s Maven.

Zistili sme, že základné nastavenie aplikácie je naozaj jednoduché a rýchle. Dropwizard navyše obsahuje každú knižnicu, ktorú potrebujeme na spustenie vysoko výkonnej webovej služby RESTful.

Ako vždy, kód týchto príkladov je k dispozícii na GitHub.

Java dole

Práve som oznámil nové Naučte sa jar kurz zameraný na základy jari 5 a Spring Boot 2:

>> SKONTROLUJTE KURZ

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