Johdatus Google Guice varten DI
Hei,
Tänään aion puhua siitä, miten päästä alkuun Google Guice for dependence injection Java. Ensinnäkin esittelen joitakin käsitteitä puitteista, sitten kirjoitamme yksinkertaisen hakemuksen esimerkkinä.
riippuvuus injektio
kuten olemme puhuneet tässä viestissä, riippuvuus injektio (DI) on tekniikka tarjota riippuvuuksia asiakkaille sen sijaan, että jälkimmäinen nimenomaisesti saada niitä. DI on periaatteessa tapa saavuttaa yleisempi tavoite nimeltään riippuvuus inversioperiaate (DIP), jossa todetaan:
sen sijaan, että riippuisi toteutuksista, mieluummin riippuvaisia abstraktioista.
sovellettaessa DI, tarvitsemme tavan pistää (lanka, sitoa) riippuvuudet niitä pyytäville asiakkaille, voisimme tehdä sen manuaalisesti asennettaessa asiakasluokkaa tai voisimme luottaa kehykseen automatisoida nämä tehtävät ja lisätä myös joitakin mielenkiintoisia toimintoja, kuten elinkaaren hallinta.
Javan suhteen on olemassa erilaisia kehyksiä, joissa on mahdollisesti hyviä ja huonoja puolia, esimerkiksi Weld, Spring, Guice jne.
tässä viestissä käytämme Guicea ja tulevassa viestissä aion puhua keväästä, luultavasti siinä yhteydessä, kun suunnittelemme levollisia sovellusliittymiä Jousisaappailla ja Kevätlepolla.
Google Guice
Google Guice on kehys, jolla voidaan automatisoida riippuvuusruiskutus tarjoamalla säiliö, johon voimme kartoittaa abstraktioita ja toteutuksia. Kartoituksen jälkeen riippuvuudet pistetään automaattisesti asiakkaisiin pyydettäessä.
guicen kartoitus tapahtuu Comin käyttöönoton myötä.googleta.pistää.Moduuli, joka yleensä tehdään perimällä abstraktista perusluokasta com.googleta.pistää.Abstraktimoduuli.
jälkeen, meidän täytyy ohittaa konfigurointimenetelmä ja luottaa sujuvaan API kutsumalla bind ja menetelmiä määritellä kartoitus välillä abstraktio (parametri bind) ja täytäntöönpano (parametri to).
sitten voimme pistää riippuvuudet merkitsemällä riippuvuutesi com: iin.googleta.pistää.Pistää.
lopuksi on saatava YMJ.googleta.pistää.Injektori meidän aiemmin määritelty moduuli, joten voimme nyt hakea asiakkaan kanssa getInstance menetelmä ja sen riippuvuudet ruiskutetaan automaattisesti.
esimerkki
Tämä esimerkki koostuu Java-järjestelmän osasta, joka lähettää lokitietoja toiminnastaan. Yksinkertaistaaksemme Guicen sisällyttämistä projektiimme, käytämme mavenia rakennusvälineenä.
pom.xml, lisää seuraava artefakti guicelle versiossa 4.0 riippuvuudet-osioon:
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version></version>
</dependence>
luodaan rajapinnan logsender edustamaan käyttäytymistä: ”lähettää lokin jollekin väliaineelle”:
tätä palvelua käyttää lämmönvaihtaja-luokka, jolla on viittaus logsenderiin ja ruiskutuksen tekee sen rakentaja merkinnällä @inject:
toteutuksen StdoutLogSender lähettää lokin vakiotulostusvirralle, tässä tapauksessa konsolille:
nyt on kerrottava guicelle, miten logsender kartoitetaan stdoutlogsenderille, ja teemme sen loggingmoduliluokan mukaan:
vihdoin pääluokkasovelluksessa voimme luoda injektorin ja siirtää loggingmodulimme sen rakentajalle. Sitten, voimme saada esimerkiksi lämmönvaihdin, joka on sen riippuvuus LogSender sidottu:
johtopäätös
tässä artikkelissa, olemme keskustelleet perusasiat siitä, miten päästä alkuun Google Guice automation of dependence injection tehtäviä Java-sovelluksessa. Kirjoitimme yksinkertaisen sovelluksen esimerkkinä siitä, miten abstraktioiden ja toteutusten välinen kartoitus määritellään ja miten ne pistetään asiakkaisiimme.
toivon, että tämän guicen peruskatsauksen avulla voit jatkaa tutkimuksiasi riippuvuusruiskutuksesta ja siitä, miten kehittää koodia, jossa kytkentä on vähäisempää ja yhteenkuuluvuus korkealla tasolla.