[java] Guice의 필드 주입(Field Injection)
Guice는 Java에서 의존성 주입(Dependency Injection)을 구현하기 위한 프레임워크입니다.
필드 주입은 Guice에서 제공하는 의존성 주입 방식 중 하나인데, 이는 클래스의 필드에 직접 의존하는 객체를 주입하는 방식입니다.
필드 주입 사용 방법
Guice를 사용하여 필드 주입을 구현하려면 다음 단계를 따라야 합니다.
- 의존성을 주입할 클래스를 정의합니다.
public class MyClass { @Inject private MyDependency myDependency; // ... }
-
필드에
@Inject
애노테이션을 사용하여 Guice에 주입 요청을 알립니다. - 필드에 주입할 의존성을 정의합니다.
public class MyModule extends AbstractModule { protected void configure() { bind(MyDependency.class).to(MyDependencyImpl.class); } }
-
AbstractModule
을 확장하는MyModule
클래스를 생성하고configure
메서드에서 필드에 주입할 의존성의 구현체를 바인딩합니다. - Guice를 사용하여 필드 주입을 수행합니다.
public class Main { public static void main(String[] args) { Injector injector = Guice.createInjector(new MyModule()); MyClass myClass = injector.getInstance(MyClass.class); // ... } }
위 예시에서는 MyClass
의 myDependency
필드에 MyDependencyImpl
객체가 주입됩니다.
필드 주입의 장단점
장점
- 코드가 간결해지고 가독성이 좋아집니다.
- 필드 주입은 개발자가 직접 의존성을 주입하지 않아도 Guice가 자동으로 주입해주기 때문에 생산성을 향상시킬 수 있습니다.
- 필드 주입은 필드의 가시성이
private
일 때 사용할 수 있습니다.
단점
- 필드 주입은 코드의 테스트가 어려울 수 있습니다. 필드에 직접 객체를 할당하기 때문에 의존성을 명시적으로 주입하거나 대체하기 어렵습니다.
결론
Guice의 필드 주입은 간결한 코드와 생산성 향상을 제공하는 동시에 테스트 가능성에 일부 제약이 있습니다. 필드 주입을 사용하는지 여부는 개발자의 판단에 달려있습니다.
더 자세한 내용은 Guice 공식 문서를 참고하시기 바랍니다.