[java] Guice의 모듈 관리

Guice는 Java를 위한 경량 의존성 주입(Dependency Injection) 프레임워크로써, 응용 프로그램의 객체간 의존성을 관리하는데 도움을 줍니다. Guice를 사용하면 모듈(Module)을 통해 의존성을 설정하고 주입할 수 있습니다.

모듈(Module)이란?

Guice는 모듈이라는 단위로 의존성을 관리합니다. 모듈은 Guice의 AbstractModule을 상속받아 구현하며, 주입할 객체를 바인딩하는 역할을 수행합니다. 모듈은 다양한 기능을 가지고 있으며, 응용 프로그램에 필요한 의존성을 정의하고 구성할 수 있습니다.

예를 들어, 다음과 같은 모듈이 있다고 가정해봅시다:

public class MyAppModule extends AbstractModule {

    @Override
    protected void configure() {
        bind(Service.class).to(ServiceImpl.class);
        bind(Repository.class).to(RepositoryImpl.class);
    }
}

위의 예제에서는 Service 인터페이스를 ServiceImpl 클래스와, Repository 인터페이스를 RepositoryImpl 클래스와 바인딩(bind)하도록 설정하였습니다.

모듈 등록하기

Guice를 사용하기 위해서는 응용 프로그램의 진입점(main 메소드 등)에서 모듈을 등록해야 합니다. 모듈은 Injector를 생성할 때 사용됩니다.

public class MyApp {

    public static void main(String[] args) {
        Injector injector = Guice.createInjector(new MyAppModule());
        
        // 필요한 객체 주입 받아 사용
        Service service = injector.getInstance(Service.class);
        service.doSomething();
    }
}

위의 예제에서 MyAppModule 모듈을 생성자에 전달하여 Injector를 생성합니다. 그리고 getInstance() 메소드를 이용하여 필요한 객체(여기서는 Service)를 주입받아 사용할 수 있습니다.

Guice를 사용하면 모듈을 등록하고 의존성을 주입받는 것이 간편해집니다. 의존성 변경이나 확장에 유연하게 대응할 수 있으며, 코드의 가독성과 재사용성을 높일 수 있습니다.

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