[java] Guice를 사용한 비즈니스 로직 분리

Guice는 Java 언어를 위한 의존성 주입(Dependency Injection) 프레임워크입니다. 이를 사용하여 애플리케이션에서 비즈니스 로직을 완전히 분리할 수 있습니다. 이 글에서는 Guice를 사용하여 비즈니스 로직을 분리하는 방법을 알아보도록 하겠습니다.

의존성 주입(Dependency Injection)

의존성 주입은 객체 간의 의존성을 외부에서 주입하는 패턴입니다. 이를 통해 객체간의 결합도를 낮추고 테스트 용이성을 높일 수 있습니다. Guice는 각 객체의 의존성을 자동으로 주입해주므로 개발자가 직접 의존성을 관리할 필요가 없습니다.

Guice 설정

먼저 Guice를 사용하기 위해 Maven이나 Gradle 같은 빌드 도구를 통해 Guice를 프로젝트에 추가해야 합니다. 다음은 Maven을 사용하는 경우의 예시입니다.

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

비즈니스 로직 분리하기

비즈니스 로직을 분리하기 위해 Guice를 사용하려면 다음 세 단계를 거쳐야 합니다.

1. 인터페이스 정의

먼저 비즈니스 로직을 담당할 인터페이스를 정의합니다. 예를 들어, 계산기 기능을 제공하는 Calculator 인터페이스를 만들어보겠습니다.

public interface Calculator {
    int add(int a, int b);
    int subtract(int a, int b);
    int multiply(int a, int b);
    int divide(int a, int b);
}

2. 구현 클래스 작성

다음으로 인터페이스를 구현하는 구현 클래스를 작성합니다. 이 예시에서는 간단한 계산기 BasicCalculator를 구현해보겠습니다.

public class BasicCalculator implements Calculator {
    @Override
    public int add(int a, int b) {
        return a + b;
    }

    @Override
    public int subtract(int a, int b) {
        return a - b;
    }

    @Override
    public int multiply(int a, int b) {
        return a * b;
    }

    @Override
    public int divide(int a, int b) {
        return a / b;
    }
}

3. Guice 설정 코드 작성

마지막으로 Guice를 사용하여 의존성을 주입하는 설정 코드를 작성합니다. 이 예시에서는 Calculator 인터페이스에 대한 바인딩을 생성하여 BasicCalculator로 주입하도록 설정합니다.

public class CalculatorModule extends AbstractModule {
    @Override
    protected void configure() {
        bind(Calculator.class).to(BasicCalculator.class);
    }
}

주입 받기

이제 비즈니스 로직을 사용하는 클래스에서 Guice를 사용하여 Calculator 인터페이스의 구현체를 주입받을 수 있습니다.

public class CalculatorConsumer {
    @Inject
    private Calculator calculator;

    public int calculate(int a, int b) {
        return calculator.add(a, b);
    }
}

결론

Guice를 사용하여 비즈니스 로직을 분리하면 코드의 유지보수성이 향상되고 테스트 용이성이 높아집니다. 의존성 주입을 활용하여 객체 간의 결합도를 낮추고 의존성을 관리하는 부담을 줄일 수 있습니다. Guice를 통해 애플리케이션의 확장성과 유연성을 높여보세요.

참고 문서