Google AutoService
1. Bemutatkozás
Ebben a gyors bemutatóban röviden elmagyarázzuk a Google automatikus szolgáltatását.
Ez egy annotációs processzor könyvtár, amely segít a Java Service Provider Interface (SPI) konfigurációs fájlok létrehozásában.
2. Java SPI
Egyszerűen fogalmazva, a Java SPI-t felhasználhatjuk kibővíthető alkalmazások fejlesztésére, mivel gyors, biztonságos és dinamikus testreszabást biztosít.
A Java SPI konfigurációs fájlokat használ a konkrét megvalósítások megkeresésére és betöltésére adott szolgáltatói interfészek. Az alkalmazás menet közbeni testreszabása az egyik fő képessége.
Másrészről, könnyű rosszul konfigurálni, és egyúttal kissé zavaró is a számunkra a konfigurációs fájlok hozzáadása vagy szerkesztése. Ezt a lépést is könnyű elfelejteni.
Ezenkívül mindig fennáll az elírási hibák kockázata, amelyeket nem veszünk észre, mivel a fordító nem veszi figyelembe a konfigurációs fájlokat.
3. Google AutoService
A Google AutoService egy nyílt forráskódú generáló eszköz, amelyet a Google Auto projekt keretében fejlesztettek ki. Az AutoService mellett két másik eszköz is létezik: AutoValue és AutoFactory.
A könyvtár célja az erőfeszítések és az idő megtakarítása és ugyanakkor a téves konfiguráció megelőzése érdekében.
3.1. Maven Setup
Először adjuk hozzá az alkalmazás automatikus függőségét. A függőséget úgy állíthatjuk be választható mert csak fordításkor van szükségünk rá:
com.google.auto.service auto-service 1.0-rc5 true
3.2. @AutoService Példa
Másodszor létrehozunk egy szolgáltatói felületet.
Tegyük fel, hogy alkalmazásunk rendelkezik fordítási funkcióval. Célunk, hogy ezt a funkciót kibővítsük. Tehát bármilyen fordító szolgáltatói komponenst egyszerűen csatlakoztathatunk:
nyilvános felület TranslationService {Karakterlánc lefordítása (Stringüzenet, Locale from, Locale to); }
Alkalmazásunk ezt az interfészt kiterjesztési pontként fogja használni. Az osztálypálya megvalósítását komponensként injektálják.
Ezt követően ezt a szolgáltatást két különböző fordítószolgáltatóval valósítjuk meg a @AutoService kommentár:
@AutoService (TranslationService.class) nyilvános osztály BingTranslationServiceProvider megvalósítja a TranslationService {@Override public String translate (String message, Locale from, Locale to) {// implementáció részletei return message + "(Bing fordítása)"; }}
@AutoService (TranslationService.class) public class GoogleTranslationServiceProvider implementates TranslationService {@Override public String translate (String message, Locale from, Locale to) {// implementáció részletei return message + "(a Google fordítása)"; }}
A fordításkor az AutoService megkeresi a feliratozást, és konfigurációs fájlt generál a megfelelő interfészek és megvalósítások mindegyikéhez.
Ennek eredményeként most megkapunk egy konfigurációs fájlt com.baeldung.autoservice.TranslationService. Ez a fájl a két szolgáltató teljesen minősített nevét tartalmazza:
com.baeldung.autoservice.BingTranslationServiceProvider com.baeldung.autoservice.GoogleTranslationServiceProvider
3.3. @AutoService akcióban
Most minden készen áll. Töltsük át a szolgáltatókat ServiceLoader:
ServiceLoader loader = ServiceLoader.load (TranslationService.class);
A ServiceLoader a konfigurációs fájlban definiált összes szolgáltatót betölteni fogja.
Ellenőrizzük a betöltött szolgáltatók számát:
long count = StreamSupport.stream (loader.spliterator (), hamis) .szám (); assertEquals (2, számít);
Más szavakkal, a ServiceLoader betöltötte az összes szolgáltatói példányt. Ezért az a feladatunk, hogy kiválasszuk közülük az egyiket.
Tehát válasszuk ki az egyik szolgáltatót, majd hívjuk meg a szolgáltatási módszert, hogy lássuk, a betöltő a várt módon működik-e:
TranslationService googleService = StreamSupport.stream (loader.spliterator (), false) .filter (p -> p.getClass (). GetSimpleName (). Egyenlő ("GoogleTranslationServiceProvider")) .findFirst () .get (); Karakterlánc üzenet = "üzenet"; assertEquals (üzenet + "(a Google fordítása)", googleService.translate (üzenet, null, null));
4. Következtetés
Ebben a cikkben elmagyaráztuk a Google AutoService könyvtárat, és egy egyszerű példával is gyakoroltuk.
A Google AutoService egy hasznos, de egyszerű forráskód-generáló könyvtár. Azt megment minket a szolgáltató konfigurációs fájljainak létrehozásától és szerkesztésétől. Ez garantálja azt is, hogy nem lesznek rosszul írt vagy helytelen fájlok.
Az oktatóanyag forráskódja a szokásos módon elérhető a GitHub projekten.