[java] Guice의 객체 그래프(Object Graph) 생성

먼저, Guice를 사용하기 위해 프로젝트에 Guice 라이브러리를 추가해야 합니다. Maven을 사용한다면 아래와 같이 의존성(dependency)을 추가할 수 있습니다.

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

의존성을 추가한 후에는 Guice의 Injector 인터페이스를 통해 객체 그래프를 생성할 수 있습니다. Injector는 Guice가 객체를 생성하고 의존성을 주입하기 위해 사용하는 주요 인터페이스입니다.

import com.google.inject.Guice;
import com.google.inject.Injector;

public class Main {

    public static void main(String[] args) {
        // Guice의 Injector 인스턴스 생성
        Injector injector = Guice.createInjector(new MyModule());

        // 인젝터를 통해 의존성 주입이 필요한 객체 생성
        MyService myService = injector.getInstance(MyService.class);

        // 생성된 객체 사용
        myService.doSomething();
    }
}

위의 코드에서 MyModule은 Guice 모듈을 나타내는 클래스입니다. Guice 모듈은 객체 생성 및 의존성 주입을 정의하는 역할을 합니다. 예를 들어, 아래와 같이 MyService를 바인딩하는 모듈을 정의할 수 있습니다.

import com.google.inject.AbstractModule;

public class MyModule extends AbstractModule {

    @Override
    protected void configure() {
        bind(MyService.class).to(MyServiceImpl.class);
    }
}

위의 코드에서 bind() 메소드를 사용하여 MyService 인터페이스를 MyServiceImpl 클래스와 바인딩하였습니다. 이렇게 하면 MyService 인터페이스를 요청할 때 MyServiceImpl 객체를 반환합니다.

이제 Injector를 통해 MyService 객체를 생성하고 사용할 수 있습니다. getInstance() 메소드를 사용하여 해당 클래스의 인스턴스를 가져옵니다.

Guice를 사용하여 객체 그래프를 생성하는 것은 매우 간단하고 강력한 기능입니다. 의존성 주입을 통해 코드의 유연성과 확장성을 크게 향상시킬 수 있습니다.

더 자세한 내용은 Guice 공식 문서를 참조하시기 바랍니다.