Úvod do Google Guice pro DI
Dobrý den,
dnes budu mluvit o tom, jak začít s Google Guice pro injekci závislostí v Javě. Nejprve představím několik konceptů o rámci, pak napíšeme jednoduchou aplikaci, která bude příkladem.
Dependency Injection
Jak jsme mluvili na tento příspěvek, dependency injection (DI) je technika poskytování závislostí pro klienty, místo toho, aby druhé výslovně jejich získání. DI je v podstatě způsob, jak dosáhnout obecnějšího cíle s názvem princip inverze závislosti (DIP), který uvádí:
namísto závislosti na implementacích raději závisí na abstrakcích.
Při použití DI, potřebujeme způsob, jak aplikovat (drát, bind) závislostí pro klienty, kteří žádají o ně, mohli bychom to udělat ručně při spouštění klienta třídy nebo bychom se mohli spolehnout na rámec pro automatizaci těchto úkolů a také přidat některé zajímavé funkce, jako je řízení životního cyklu.
Pokud jde o Javu, existuje celá řada rámců s možnými klady a zápory, například Weld, Spring, Guice atd.
V tomto příspěvku, budeme pomocí Guice a v dalším příspěvku, mám v úmyslu mluvit o Jaře, pravděpodobně v souvislosti navrhování Rest Api s Spring Boot a Jarní ODPOČINEK.
Google Guice
Google Guice je rámec pro automatizaci vkládání závislostí tím, že poskytuje kontejner, kde můžeme mapovat abstrakce a implementace. Po mapování budou závislosti automaticky injektovány do klientů na vyžádání.
mapování v Guice je dosaženo implementací com.Microsoft.aplikovat.Modul, který se obvykle provádí zděděním od abstraktní základní třídy com.Microsoft.aplikovat.AbstractModule.
Poté, potřebujeme přepsat konfiguraci metody a spoléhají na fluent API voláním bind a metody definovat mapování mezi abstrakcí (parametr bind) a provádění (parametr k).
pak můžeme aplikovat závislosti tím, že anotací své závislosti S com.Microsoft.aplikovat.Aplikovat.
nakonec musíme získat com.Microsoft.aplikovat.Injektor z našeho dříve definovaného modulu, takže jsme nyní schopni načíst klienta metodou getInstance a jeho závislosti budou automaticky injektovány.
příklad
tento příklad se skládá z části Java systému, který odesílá informace protokolu o jeho provozu. Abychom zjednodušili začlenění Guice do našeho projektu, použijeme Maven jako nástroj pro sestavení.
V pom.xml, přidejte následující artefakt pro Guice ve verzi 4.0 v sekci závislostí:
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version></verze>
</závislost>
Pojďme vytvořit rozhraní LogSender reprezentovat chování: „odešle log na některé střední“:
Tato služba bude použit Výměník třídy, která má odkaz na LogSender a injekce bude provedeno jeho konstruktor komentovaný s @Inject:
provádění StdoutLogSender pošle záznam do standardního výstupního proudu, v tomto případě konzole:
Nyní, musíme říci, Guice, jak se mapa LogSender na StdoutLogSender, a to uděláme podle LoggingModule třída:
a Konečně, v hlavní třídě Aplikace, můžeme vytvořit Vstřikovače a předat naše LoggingModule do jeho konstruktoru. Pak jsme schopni získat instanci Výměník, který bude mít svou závislost na LogSender povinen:
Závěr
V tomto článku jsme probrali základy o tom, jak začít s Google Guice pro automatizaci vstřikování závislost úkolů v aplikaci Java. Napsali jsme jednoduchou aplikaci příkladem, jak definovat mapování mezi abstrakcí a implementace a jak je aplikovat v našich klientů.
doufám, že s tímto základním přehledem Guice můžete pokračovat ve studiu o injekci závislostí a o tom, jak rozvíjet kód s nižší úrovní vazby a vysokou úrovní soudržnosti.