Bevezetés a Dropwizardba

Java Top

Most jelentettem be az újat Tanulj tavaszt tanfolyam, amelynek középpontjában az 5. tavasz és a tavaszi bakancs 2 alapjai állnak:

>> ELLENŐRIZZE A FOLYAMATOT

1. Áttekintés

A Dropwizard egy nyílt forráskódú Java-keretrendszer, amelyet nagy teljesítményű RESTful webszolgáltatások gyors fejlesztésére használnak. Összegyűjti néhány népszerű könyvtárat a könnyű csomag létrehozásához. A fő könyvtárak, amelyeket használ, a Jetty, Jersey, Jackson, JUnit és Guava. Ezenkívül a saját Metrics nevű könyvtárát is használja.

Ebben az oktatóanyagban megtanuljuk, hogyan kell konfigurálni és futtatni egy egyszerű Dropwizard alkalmazást. Ha elkészültünk, alkalmazásunk egy RESTful API-t tesz közzé, amely lehetővé teszi számunkra a tárolt márkák listájának megszerzését.

2. Maven-függőségek

Először is a dropwizard-core csak a függőségre van szükségünk szolgáltatásunk létrehozásához. Tegyük hozzá a sajátunkhoz pom.xml:

 io.dropwizard dropwizard-core 2.0.0 

3. Konfiguráció

Most létrehozzuk a szükséges osztályokat, amelyek szükségesek minden Dropwizard alkalmazás futtatásához.

A Dropwizard alkalmazások tulajdonságait YML fájlokban tárolják. Ezért létrehozzuk a bevezetés-config.yml fájl az erőforrás könyvtárban:

alapértelmezett méret: 5

A fájl értékeit egy kiterjesztett osztály létrehozásával érhetjük el io.dropwizard.Configuration:

a public class BasicConfiguration kiterjeszti a konfigurációt {@NotNull private final int defaultSize; @JsonCreator public BasicConfiguration (@JsonProperty ("defaultSize") int defaultSize) {this.defaultSize = defaultSize; } public int getDefaultSize () {return defaultSize; }}

A Dropwizard Jackson segítségével deserializálja a konfigurációs fájlt az osztályunkba. Ezért Jackson feliratokat használtunk.

Ezután hozzuk létre a fő alkalmazásosztályt, amely a szolgáltatásunk használatának előkészítéséért felelős:

public class A IntroductionApplication kiterjeszti az alkalmazást {public static void main (String [] args) dobja a Kivételt {new IntroductionApplication (). run ("server", "Introduction-config.yml"); } @Orride public void run (BasicConfiguration basicConfiguration, Environment environment) {// register osztályok} @Orride public void inicializálás (Bootstrap bootstrap) {bootstrap.setConfigurationSourceProvider (új ResourceConfigurationSourceProvider ()); super.initialize (bootstrap); }}

Először is a fő- módszer felelős az alkalmazás futtatásáért. Vagy elhaladhatunk a mellett érvel hoz fuss módszerrel, vagy magunk töltsük ki.

Az első érv lehet bármelyik szerver vagy jelölje be. A jelölje be opció érvényesíti a konfigurációt, míg a szerver opció futtatja az alkalmazást. A második érv a konfigurációs fájl helye.

Továbbá a inicializálni metódus a konfigurációs szolgáltatót a ResourceConfigurationSourceProvider, amely lehetővé teszi az alkalmazás számára, hogy megtaláljon egy adott konfigurációs fájlt az erőforrás könyvtárban. Nem kötelező ezt a módszert felülbírálni.

Végül a fuss módszer lehetővé teszi számunkra, hogy hozzáférjünk mind a Környezet és a BaseConfiguration, amelyet később ebben a cikkben használunk.

4. Forrás

Először hozzunk létre egy domain osztályt márkánk számára:

public class Márka {private final Hosszú id; privát végleges karakterlánc neve; // összes args konstruktor és getters}

Másodsorban hozzunk létre egy BrandRepository osztály, amely felelős lesz a márkák visszatéréséért:

public class BrandRepository {private final List márkák; public BrandRepository (List brand) {this.brands = ImmutableList.copyOf (márkák); } public List findAll (int size) {return brands.stream () .limit (size) .collect (Collectors.toList ()); } public Opcionális findById (Long id) {return brands.stream () .filter (brand -> brand.getId (). egyenlő (id)) .findFirst (); }}

Ezenkívül használhattuk a ImmutableList Guavától, mert maga a Dropwizard része.

Harmadszor, létrehozunk egy BrandResource osztály. A Dropwizard alapértelmezés szerint a JAX-RS-t használja Jersey-ként megvalósításként. Ezért felhasználjuk a specifikáció jegyzeteit a REST API végpontjaink feltárásához:

@Path ("/ brand") @Produces (MediaType.APPLICATION_JSON) nyilvános osztály BrandResource {private final int defaultSize; privát végleges BrandRepository brandRepository; public BrandResource (int defaultSize, BrandRepository brandRepository) {this.defaultSize = defaultSize; this.brandRepository = brandRepository; } @GET public list getBrands (@QueryParam ("size") Opcionális méret) {return brandRepository.findAll (size.orElse (defaultSize)); } @GET @Path ("/ {id}") public brand getById (@PathParam ("id") Long id) {return brandRepository .findById (id) .orElseThrow (RuntimeException :: new); }}

Ezenkívül meghatároztuk méret mint Választható felhasználása érdekében defaultSize konfigurációnkból, ha az argumentum nincs megadva.

Végül regisztrálunk BrandResource ban,-ben Bevezetés Alkalmazás osztály. Ennek érdekében hajtsuk végre a fuss módszer:

@Orride public void run (BasicConfiguration basicConfiguration, Environment environment) {int defaultSize = basicConfiguration.getDefaultSize (); BrandRepository brandRepository = új BrandRepository (initBrands ()); BrandResource brandResource = új BrandResource (alapértelmezett méret, brandRepository); környezet .mez () .regiszter (brandResource); }

Minden létrehozott erőforrást regisztrálni kell ebben a módszerben.

5. Futó alkalmazás

Ebben a szakaszban megtudhatjuk az alkalmazás futtatását a parancssorból.

Először konfiguráljuk a projektünket egy JAR fájl létrehozására a maven-shadow-plugin:

 org.apache.maven.plugins maven-shadow-plugin true *: * META-INF / *. SF META-INF / *. DSA META-INF / *. RSA csomagárnyék com.baeldung.dropwizard.introduction.IntroductionApplication 

Ez a plugin javasolt konfigurációja. Ezenkívül felvettük a fő osztályunkhoz vezető utat a elem.

Végül elkészítjük az alkalmazást Maven-nel. Miután megvan a JAR fájlunk, futtathatjuk az alkalmazást:

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

Van nem kell átadni a paramétereket, mert már felvettük őket a BevezetésAlkalmazás osztály.

Ezt követően a konzolnaplónak a következővel kell végződnie:

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

Az alkalmazás a 8080-as porton hallgat, és itt érhetjük el a márka végpontunkat // localhost: 8080 / márkák.

6. Egészségügyi ellenőrzés

Az alkalmazás indításakor arról értesültünk, hogy az alkalmazásnak nincs egészségügyi állapota. Szerencsére, A Dropwizard egyszerű megoldást kínál az alkalmazás állapotfelmérésére.

Kezdjük egy egyszerű, kibővített osztály hozzáadásával com.codahale.metrics.health.HealthCheck:

public class ApplicationHealthCheck kiterjeszti a HealthCheck {@Orride protected Result check () dobja Exception {return Result.healthy (); }}

Ez az egyszerű módszer információt szolgáltat komponensünk egészségességéről. Létrehozhatunk több állapotfelmérést, és egyesek bizonyos helyzetekben kudarcot vallhatnak. Például visszatérnénk Eredmény.egészségtelen () ha az adatbázishoz való kapcsolódás nem sikerült.

Végül meg kell regisztrálja állapotfelmérésünket ban,-ben fuss módszerünk BevezetésAlkalmazás osztály:

környezet .healthChecks () .register ("alkalmazás", új ApplicationHealthCheck ());

Az alkalmazás futtatása után megtehetjük ellenőrizze az állapotfelmérési választ alatt // localhost: 8081 / healthcheck:

{"alkalmazás": {"egészséges": igaz, "időtartam": 0}, "holtpontok": {"egészséges": igaz, "időtartam": 0}}

Mint láthatjuk, az állapotfelmérésünket a Alkalmazás címke.

7. Következtetés

Ebben a cikkben megtanultuk, hogyan állítsuk be a Dropwizard alkalmazást a Mavennel.

Felfedeztük, hogy az alkalmazás alapbeállítása nagyon egyszerű és gyors. Ezenkívül a Dropwizard minden olyan könyvtárat tartalmaz, amelyre szükségünk van a nagy teljesítményű RESTful webszolgáltatás futtatásához.

Mint mindig, ezeknek a példáknak a kódja elérhető a GitHub oldalon.

Java alsó

Most jelentettem be az újat Tanulj tavaszt tanfolyam, amelynek középpontjában az 5. tavasz és a tavaszi bakancs 2 alapjai állnak:

>> ELLENŐRIZZE A FOLYAMATOT