Articles

Di 용 Google Guice 소개

안녕하세요,

오늘은 Java 에서 종속성 주입을 위해 Google Guice 를 시작하는 방법에 대해 이야기하겠습니다. 먼저 프레임 워크에 대한 몇 가지 개념을 소개 한 다음 간단한 응용 프로그램을 작성하여 예시하겠습니다.

성 주입

으로 우리는 이야기이 게시물에,종속성을 주입(DI)기술을 제공하의 종속성을 위해 클라이언트 대신 후자의 명시적으로 얻는다. Di 는 기본적으로 dip(dependency inversion principle)라는 더 일반적인 목표를 달성하는 방법입니다.:

구현에 따라 달라지는 대신 추상화에 의존하는 것을 선호합니다.

을 적용할 때 디에,우리는 방법이 필요를 주입(와이어 바인딩)종속성을 위해 이를 요청하는 클라이언트들을,우리는 그것을 할 수 있을 때 수동으로 인스턴스화하는 클라이언트 클래스 또는 우리에 의존 할 수 있는 프레임워크를이 작업을 자동화하는 작업과 또한 추가 몇 가지 흥미로운 기능,다음과 같 수명 주기 관리.

Java 와 관련하여 용접,스프링,Guice 등과 같이 장단점이있는 다양한 프레임 워크가 있습니다.

이 게시물에서는 Guice 를 사용하고 향후 게시물에서는 Spring Boot 및 Spring REST 로 RESTful Api 를 설계하는 맥락에서 Spring 에 대해 이야기하려고합니다.

구글 쥬스와

Google 쥬스와 프레임워크를 자동화하는 종속 주입에 의해 제공할 수 있도록 컨테이너는 곳에 매핑할 수 있습니다 추상화 및 구현. 매핑 후 종속성은 요청 될 때 클라이언트에 자동으로 주입됩니다.

Guice 에서의 매핑은 com 의 구현에 의해 달성된다.구글.주입하십시오.일반적으로 추상 기본 클래스 com 에서 상속하여 수행되는 모듈.구글.주입하십시오.AbstractModule.

한 후에,우리는 우리를 재정의해야 할 구성 방법에 의존하고 유창한 API 를 호출하여 바인딩하는 방법을 정의하는 간의 매핑을 추상화(의 매개변수에 바인딩)및 구현(매개변수의하).

그런 다음 com 과 함께 종속성에 주석을 달아 종속성을 주입 할 수 있습니다.구글.주입하십시오.주입하십시오.

마지막으로 com 을 얻어야합니다.구글.주입하십시오.인젝터에서 우리의 이전에 정의된 모듈이 있습니다,그래서 우리는 지금 할 수 있 검색 클라이언트와 함께 코드를 지정해주는 방법과 종속성으로 주입됩니다.

예제

이 예제는 작업에 대한 로그 정보를 전송하는 Java 시스템의 일부로 구성됩니다. Guice 를 프로젝트에 포함시키는 것을 단순화하기 위해 maven 을 빌드 도구로 사용하려고합니다.pom 에서

.xml,종속성 섹션의 버전 4.0 에서 Guice 에 대한 다음 아티팩트를 추가하십시오:

<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version><>
<>

을 만들어 보자 인터페이스 LogSender 을 대표하는 행동:”로그를 보내하는 몇몇 중”:

이 서비스에 사용되는 것으로 교환기가 있는 클래스를 참조하 LogSender 및 주입에 의해 수행됩니다 그것의 생성자로 주석@Inject:

구현 StdoutLogSender 이 로그를 보내려면에 표준 출력 스트림,이 경우에는 콘솔:

이제 우리에게 필요 쥬스와 방법을 지도 LogSender 을 StdoutLogSender, 그리고 우리는 그것에 의해 LoggingModule class:

마지막으로,기본 클래스는 응용 프로그램을 만들 수 있습 Injector 고 전달하는 우리의 LoggingModule 그것의 생성자입니다. 그런 다음 우리는 얻을 수 있는 인스턴스의 교환기는 그것의 종속성을 LogSender 밖에 없:

결론

이 문서에서,우리는 설명에 관한 기본 시작하는 방법으로 Google 쥬스와 자동화의 주입에 의존 작업에서 옵션을 선택해야 합니다. 우리가 쓴 간단한 응용 프로그램를 예시하는 방법을 정의하는 간의 매핑을 추상화하고 구현하는 방법과 그들에게 주입에서 우리의 클라이언트입니다.

나는 희망을 가진 이에 대한 기본적인 개요를 쥬스와 계속할 수 있습니다 당신의 연구에 대해성 주입하고 개발하는 방법 코드와 낮은 수준의 결합과 높은 수준의 결합.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다