[java] Google Guice와 Log4j 함께 사용하는 방법은?

다음은 Google Guice와 Log4j를 함께 사용하는 방법에 대한 예제입니다.

  1. Google Guice와 Log4j의 의존성을 프로젝트에 추가합니다. 이는 Maven이나 Gradle과 같은 빌드 도구를 사용하여 간단히 처리할 수 있습니다.
<!-- Guice -->
<dependency>
    <groupId>com.google.inject</groupId>
    <artifactId>guice</artifactId>
    <version>4.2.3</version>
</dependency>

<!-- Log4j -->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.14.1</version>
</dependency>
  1. Google Guice를 사용하여 의존성 주입을 설정합니다. 예를 들어, MyService라는 서비스 클래스가 있고, MyDao라는 DAO 클래스에 의존한다고 가정해봅시다.
public class MyService {
    private final MyDao myDao;
    private final Logger logger;

    @Inject
    public MyService(MyDao myDao, Logger logger) {
        this.myDao = myDao;
        this.logger = logger;
    }

    public void doSomething() {
        // 서비스 로직 실행
        logger.info("Something is being done...");
    }
}

public class MyDao {
    // DAO 로직 구현
}
  1. Guice 모듈을 작성하여 의존성을 바인딩하고 Log4j의 Logger를 주입합니다.
public class MyModule extends AbstractModule {
    @Override
    protected void configure() {
        bind(MyDao.class);
        
        // Log4j Logger 주입
        bind(Logger.class).toInstance(LogManager.getLogger(MyService.class));
    }
}
  1. 애플리케이션의 진입점에서 Guice를 설정하고 작성한 모듈을 바인딩합니다.
public class MyApp {
    public static void main(String[] args) {
        Injector injector = Guice.createInjector(new MyModule());
        MyService myService = injector.getInstance(MyService.class);
        myService.doSomething();
    }
}

위와 같이 Google Guice와 Log4j를 함께 사용하여 의존성 주입과 로깅 기능을 효과적으로 구성할 수 있습니다. 이는 객체 간의 결합도를 낮추고 유연하고 테스트 가능한 애플리케이션을 개발하는 데 도움이 됩니다.

참고 문서: