Bevezetés Bootique-ba

1. Áttekintés

Bootique nagyon könnyű, nyílt forráskódú konténer nélküli A JVM keretrendszer célja a következő generációs skálázható mikraszolgáltatások kiépítése. A beágyazott Jetty szerver tetejére épül, és teljes mértékben támogatja PIHENÉS kezelők jax-rs.

Ebben a cikkben bemutatjuk, hogyan lehet egyszerű webalkalmazást létrehozni Bootique.

2. Maven-függőségek

Kezdjük el használni Bootique a következő függőség hozzáadásával a pom.xml:

 io.bootique.jersey bootique-jersey összeállítás io.bootique bootique-teszt teszt 

Azonban, Bootique néhányat is be kell jelentenie BOM („Bill of Material”) behozatal. Ezért követi szakaszt hozzá kell adni a pom.xml:

   io.bootique.bom bootique-bom 0,23 pom import 

A legfrissebb verziója Bootique elérhető a Central Maven Repository-ban.

Futható korsó építéséhez Bootique a maven-shadow-pluginre támaszkodik. Ezért az alábbi konfigurációt is hozzá kell adnunk:

   org.apache.maven.plugins maven-shadow-plugin 

3. Alkalmazás indítása

A legegyszerűbb módja a Bootique az alkalmazás a hivatkozás Bootique’S exec () módszer a fő módszerből:

public class App {public static void main (String [] args) {Bootique.app (args) .autoLoadModules () .exec (); }}

Ez azonban nem indítja el a beágyazott szervert. A fenti kód futtatása után a következő naplót kell megjeleníteni:

Név com.baeldung.bootique.App OPTIONS -c yaml_location, --config = yaml_location Megadja a YAML konfigurációs helyét, amely lehet fájl elérési út vagy URL. -h, --help Ezt az üzenetet kinyomtatja. -H, --help-config Információt nyomtat az alkalmazás modulokról és azok konfigurációs lehetőségeiről. -s, --server Indítja a Jetty szervert.

Ezek nem más, mint a rendelkezésre álló program argumentumok, amelyek előre csomagban vannak Bootique.

A nevek nem egyértelműek; ennélfogva a szerver elindításához át kell mennünk –S vagy -szerver argumentumot, és a szerver fel fog működni a alapértelmezett 8080-as port.

4. Modulok

Bootique az alkalmazások „modulok” gyűjteményeivel készülnek. Ban ben Bootique’S kifejezés „A modul egy Java könyvtár, amely tartalmaz valamilyen kódot” ami azt jelenti, hogy minden szolgáltatást modulként kezel. Használja Google Guice függőségi injekcióhoz.

Hogy láthassuk, hogyan működik, hozzunk létre egy felületet:

nyilvános felület HelloService {logikai mentés (); }

Most létre kell hoznunk egy megvalósítást:

public class HelloServiceImpl implementálja a HelloService {@Orride public boolean save () {return true; }}

Kétféle módon tölthetjük be a modult. Az első a használat Guice’S Modul felületet, a másik pedig a Bootique’S BQModuleProvider amely más néven automatikus betöltés.

4.1. Guice modul

Itt használhatjuk Guice’S Modul felület példányok megkötésére:

public class ModuleBinder megvalósítja a {@Override public void configure (Binder binder) {binder .bind (HelloService.class) .modult (HelloServiceImpl.class) modult; }}

A modul definiálása után ezt az egyéni modult fel kell térképeznünk a Bootique példa:

Bootique .app (args) .module (module) .module (ModuleBinder.class) .autoLoadModules () .exec ();

4.2. BQModuleProvider (automatikus betöltés)

Itt csak annyit kell tennünk, hogy meghatározzuk a korábban létrehozott modul-kötőanyagot BQModuleProvider:

public class ModuleProvider implementálja a BQModuleProvider {@Override public Module module () {return new ModuleBinder (); }}

Ennek a technikának az az előnye, hogy nem kell feltöltenünk a modulra vonatkozó információkat a Bootique példa.

Csak létre kell hoznunk egy fájlt a /resources/META-INF/services/io.bootique.BQModuleProvider és írja be a ModuleProvider beleértve a csomag nevét és Bootique gondoskodik a többiről:

com.baeldung.bootique.module.ModuleProvider

Most már használhatjuk @ Injekció jelölés a szolgáltatáspéldányok futás közbeni használatához:

@ Injekció HelloService helloService;

Itt fontos megjegyezni, hogy mivel használjuk BootiqueSaját DI mechanizmusát, nem kell használnunk Guice @ImplementedBy megjegyzés a szolgáltatási példányok megkötésére.

5. REST végpont

A REST végpontok létrehozása JAX-RS API használatával egyszerű:

@Path ("/") public class IndexController {@GET public String index () {return "Hello, baeldung!"; } @POST public String save () {return "Data Saved!"; }}

A végpontok feltérképezése a BootiqueA sajátja Jersey például meg kell határoznunk a JerseyModule:

Modul modul = kötőanyag -> JerseyModule .extend (kötőanyag) .addResource (IndexController.class);

6. Konfiguráció

Beépített vagy egyedi konfigurációs információkat nyújthatunk egy YAML-alapú tulajdonságfájlban.

Például, ha el akarjuk indítani az alkalmazást egy egyéni porton, és hozzáadunk egy alapértelmezett „hello” URI-kontextust, használhatjuk a következő YAML-konfigurációt:

móló: összefüggés: / hello csatlakozó: port: 10001

Az alkalmazás indításakor meg kell adnunk a fájl helyét a config paraméterben:

--config = / home / baeldung / bootique / config.yml

7. Naplózás

Dobozon kívül Bootique jön egy bootique-logback modul. A modul használatához hozzá kell adnunk a következő függőséget a pom.xml:

 io.bootique.logback bootique-logback 

Ez a modul a BootLogger felülettel felülírhatjuk az egyedi naplózás megvalósítását:

Bootique.app (args) .module (module) .module (ModuleBinder.class) .bootLogger (new BootLogger () {@Orride public void trace (Supplier args) {// ...} @Override public void stdout (String args ) {// ...} @Orride public void stderr (String args, Throwable thw) {// ...} @Orride public void stderr (String args) {// ...}}). AutoLoadModules (). exec ();

Ezenkívül meghatározhatjuk a naplózási konfigurációs információkat a config.yaml fájl:

napló: szint: figyelmezteti a mellékleteket: - típus: fájl logFormátum: '% c {20}:% m% n' fájl: /path/to/logging/dir/logger.log

8. Tesztelés

Teszteléshez Bootique jön a bootique-teszt modul. Kétféleképpen tesztelhetjük a Bootique Alkalmazás.

Az első megközelítés az 'előtér' megközelítés, amely az összes tesztesetet a fő tesztszálon futtatja.

A másik az 'háttér' megközelítés, amely a teszteseteket elszigetelt szálkészleten futtatja.

Az „előtér” környezet inicializálható a BQTestFactory:

@Rule public BQTestFactory bqTestFactory = new BQTestFactory ();

A „háttér” környezet inicializálható BQDaemonTestFactory:

@Rule public BQDaemonTestFactory bqDaemonTestFactory = new BQDaemonTestFactory ();

Miután a környezeti gyár készen áll, egyszerű teszteseteket írhatunk a szolgáltatások tesztelésére:

@Test public void givenService_expectBoolen () {BQRuntime runtime = bqTestFactory .app ("- server"). AutoLoadModules () .createRuntime (); HelloService szolgáltatás = runtime.getInstance (HelloService.class); assertEquals (true, service.save ()); }

9. Következtetés

Ebben a cikkben bemutattuk, hogyan lehet egy alkalmazást felépíteni BootiqueAlapmoduljai. Több más is létezik Bootique elérhető modulok, mint bootique-jooq, bootique-kotlin, bootique-jobstb. A rendelkezésre álló modulok teljes listája itt érhető el.

Mint mindig, a teljes forráskód is elérhető a GitHubon.