Bevezetés a Google Guice for di
Hello,
ma arról fogok beszélni, hogyan kezdjem el a Google Guice for dependency injection-t Java-ban. Először bemutatok néhány fogalmat a keretrendszerről, majd egy egyszerű alkalmazást írunk, amely példázza.
Dependency Injection
ahogy erről a bejegyzésről beszéltünk, a dependency injection (DI) egy olyan technika, amely függőségeket biztosít az ügyfelek számára, ahelyett, hogy ez utóbbi kifejezetten megszerezné őket. DI alapvetően egy módja annak, hogy elérjék egy általánosabb cél nevű függőség inverzió elv (DIP), amely kimondja:
a megvalósításoktól függően inkább az absztrakcióktól függ.
alkalmazásakor DI, szükségünk van egy módja annak, hogy adja be (drót, kötődnek) a függőségek az ügyfelek, hogy kérik őket, tudtuk csinálni manuálisan, amikor példányosításakor a kliens osztály, vagy tudtunk támaszkodni egy keretet, hogy automatizálják ezt a feladatot, és hozzá néhány érdekes funkciókat, mint az életciklus menedzsment.
a Java vonatkozásában számos keretrendszer létezik, amelyek esetleg előnyösek vagy hátrányosak, például hegesztés, rugó, Guice stb.
ebben a bejegyzésben a Guice-t fogjuk használni, egy későbbi bejegyzésben pedig a tavaszról szeretnék beszélni, valószínűleg a tavaszi csizmával és a tavaszi pihenéssel rendelkező nyugodt API-k tervezésével összefüggésben.
Google Guice
a Google Guice egy olyan keretrendszer, amely automatizálja a függőségi befecskendezést azáltal, hogy egy konténert biztosít, ahol absztrakciókat és megvalósításokat térképezhetünk fel. A leképezés után a függőségek automatikusan beinjektálódnak az ügyfelekbe, ha kérik.
a leképezés Guice-ban a com végrehajtásával érhető el.google.injekció.Modul, amely általában úgy történik, örökli az absztrakt bázis osztály com.google.injekció.AbstractModule.
Után, felül kell beállítani módszer támaszkodnak folyékonyan API hívja kötődik, illetve módszerek meghatározása közötti megfeleltetés a absztrakció (paraméter a bind), illetve a végrehajtás (paramétert kell).
ezután beadhatjuk a függőségeket úgy, hogy a függőségeket com-val kommentáljuk.google.injekció.Injekció.
végül meg kell szereznünk egy com-ot.google.injekció.Injektor a korábban definiált modulunkból, így most már a getinstance módszerrel tudjuk lekérni az Ügyfelet, a függőségei pedig automatikusan befecskendezhetők.
példa
Ez a példa egy Java rendszer egy részéből áll, amely naplóinformációkat küld a működéséről. A Guice beépítésének egyszerűsítése a projektünkbe, a Maven-t építési eszközként fogjuk használni.
a pom-ban.xml, adja hozzá a következő leletet a Guice-hoz a 4.0 verzióhoz a függőségek szakaszban:
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version></változat>
</függőség>
hozzuk létre a felületen LogSender, hogy képviselje a viselkedés: “küld a napló néhány közepes”:
Ez a szolgáltatás használható által Hőcserélő osztály, hogy van egy hivatkozás, hogy LogSender, majd az injekció végzi a kivitelező vezetni az @Injekciót:
A végrehajtás StdoutLogSender küld a napló a szabványos kimenetet, ebben az esetben a konzol:
Most, hogy is kell mondanom, Guice hogyan térkép LogSender, hogy StdoutLogSender, mi a LoggingModule osztály:
Végre, a fő osztály Alkalmazás, akkor létrehozhat egy Injektor, majd át a LoggingModule, hogy a kivitelező. Ezután képesek vagyunk egy olyan hőcserélő példányt kapni, amely a LogSender-től függ:
következtetés
ebben a cikkben megvitattuk az alapokat a Google Guice-vel a függőségi befecskendezési feladatok automatizálásához a Java alkalmazásban. Írtunk egy egyszerű alkalmazást, hogy bemutassuk, hogyan definiálhatjuk az absztrakciók és implementációk közötti leképezést, illetve hogyan adhatjuk be azokat ügyfeleinknek.
remélem, hogy ezzel az alapvető áttekintést Guice akkor továbbra is a tanulmányok függőség injekció, valamint hogyan kell fejleszteni kód alacsonyabb szintű kapcsolási és magas szintű kohézió.