Introduksjon Til Google Guice FOR DI
Hei,
I Dag skal jeg snakke om Hvordan Du kommer i gang Med Google Guice for avhengighetsinjeksjon i Java. For det første vil jeg introdusere noen begreper om rammen, så skriver vi et enkelt program for å eksemplifisere.
Dependency Injection
som vi har snakket om dette innlegget, er dependency injection (DI) en teknikk for å gi avhengigheter for klienter i stedet for at sistnevnte eksplisitt får dem. DI er i utgangspunktet en måte å oppnå et mer generelt mål som heter dependency inversion principle (DIP), som sier:
i Stedet for avhengig av implementeringer, foretrekker å stole på abstraksjoner.
NÅR du bruker DI, trenger VI en måte å injisere (wire, bind) avhengighetene for klientene som ber om dem.
Når Det Gjelder Java, finnes Det en rekke rammer med muligens fordeler og ulemper, for Eksempel Sveis, Vår, Guice etc.
I dette innlegget bruker Vi Guice, og i et fremtidig innlegg har jeg tenkt Å snakke Om Våren, sannsynligvis i sammenheng med å designe RESTful Apier Med Spring Boot og Spring REST.
Google Guice
Google Guice Er et rammeverk for å automatisere avhengighetsinjeksjon ved å gi en beholder til hvor vi kan kartlegge abstraksjoner og implementeringer. Etter kartleggingen blir avhengighetene automatisk injisert i klienter når de blir bedt om det.
kartleggingen i Guice oppnås ved implementering av com.google.injisere.Modul som normalt gjøres ved å arve fra den abstrakte baseklassen com.google.injisere.AbstractModule.Etter må vi overstyre konfigurasjonsmetoden og stole på en flytende API ved å ringe bind og til metoder for å definere kartleggingen mellom abstraksjonen (parameter for bind) og implementering (parameter for til).
da kan vi injisere avhengighetene ved å annotere avhengighetene dine med com.google.injisere.Injisere.
Til Slutt må Vi få et com.google.injisere.Injektor fra vår tidligere definerte modul, så vi kan nå hente klienten med getInstance-metoden, og dens avhengigheter blir automatisk injisert.
Eksempel
dette eksemplet består av en Del Av Et Java-system som sender logginformasjon om driften. For å forenkle inkluderingen Av Guice i vårt prosjekt, skal Vi bruke Maven som et byggverktøy.
I pom.xml, legg til følgende artefakt For Guice på versjon 4.0 i delen avhengigheter:
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version></versjon>
</avhengighet>
la oss lage grensesnittet logsender å representere atferd: «sender loggen til noen medium»:
denne tjenesten vil bli brukt av leren klasse som har en referanse til logsender og injeksjonen vil bli gjort av sin konstruktør annotert med @inject:
implementeringen StdoutLogSender vil sende loggen til standard utgangsstrøm, i dette tilfellet konsollen:
nå må vi fortelle guice hvordan man kartlegger logsender til stdoutlogsender, og vi gjør det ved loggingmodule-klassen:
endelig kan vi i hovedklasseprogrammet lage en injektor og sende loggingmodulen til konstruktøren. Da kan vi få en forekomst Av Veksler som vil ha sin avhengighet Av LogSender bundet:
Konklusjon
i denne artikkelen har vi diskutert grunnleggende om hvordan du kommer i gang med Google Guice for automatisering av avhengighetsinjeksjonsoppgaver I Java-programmet. Vi skrev et enkelt program for å eksemplifisere hvordan man definerer kartlegging mellom abstraksjoner og implementeringer og hvordan man injiserer dem i våre kunder.
jeg håper at med Denne grunnleggende oversikten Over Guice kan du fortsette studiene om avhengighetsinjeksjon og hvordan du utvikler kode med lavere koblingsnivå og høyt kohesjonsnivå.