반응형
Notice
Recent Posts
Recent Comments
관리 메뉴

개키우는개발자 : )

Dependency Injection 본문

반응형

결론 및 요약

스프링의 핵심 개념인 의존성 주입(Dependency Injection, DI)에 대해 학습했습니다. DI는 클래스 간의 의존 관계를 효과적으로 관리하여 코드의 유연성과 재사용성을 높이는 방법입니다. 스프링 컨테이너가 DI를 통해 객체들 간의 관계를 설정하고, 개발자가 직접 의존성을 관리하지 않아도 자동으로 객체를 주입하도록 구성할 수 있습니다. 이로 인해 코드가 더 모듈화되고 변경에 대한 유연성이 확보됩니다.

주요 내용 요약

  1. 의존성 주입(DI) 개념:
    • 클래스가 다른 클래스에 의존할 때, 직접 인스턴스를 생성하는 대신 외부에서 필요한 객체를 주입받는 방식입니다. 이로 인해 클래스 간의 강한 결합을 피하고 유연한 코드 작성이 가능합니다.
    • HelloControllerSimpleHelloService에 의존하게 되었는데, 이를 인터페이스(HelloService)로 추상화하여 코드의 의존성을 줄일 수 있습니다.
  2. DI의 문제 해결:
    • 클래스 내부에서 특정 객체를 직접 생성하는 방식은 코드 변경 시마다 수정을 필요로 하므로 유지보수성이 낮습니다. 이를 해결하기 위해 인터페이스를 통해 의존성을 관리하고, DI를 통해 객체를 외부에서 주입받는 방식으로 코드의 결합도를 낮출 수 있습니다.
    • DI를 통해 여러 서비스 구현체 간의 전환이 가능해지며, 코드 수정 없이도 런타임에 다른 구현체를 사용할 수 있게 됩니다.
  3. DI의 실제 적용:
    • DI를 적용할 때 스프링 컨테이너가 핵심 역할을 합니다. 스프링 컨테이너는 필요한 객체를 자동으로 생성하고, 객체 간의 의존 관계를 설정하여 필요한 곳에 객체를 주입해줍니다.
    • 객체 주입 방식으로는 생성자 주입, 세터 주입, 필드 주입 등의 방법이 있으며, 이를 통해 유연하게 객체를 구성할 수 있습니다.
  4. Spring 컨테이너의 역할:
    • 스프링 컨테이너는 객체 생성과 더불어 의존성 주입(Assembler 역할)을 담당합니다. 컨테이너는 애플리케이션의 객체들을 관리하고, 메타 데이터를 바탕으로 객체들 간의 의존성을 설정해 주입합니다.
    • 이를 통해 개발자는 객체의 생성 및 의존성 관리에 신경 쓰지 않고 비즈니스 로직에만 집중할 수 있습니다.

결론:
의존성 주입(DI)은 객체 간의 의존성을 외부에서 관리하여 코드의 결합도를 낮추고 유연성을 높여 줍니다. 이를 통해 코드 변경 시 수정 범위를 최소화하고, 여러 구현체 간의 전환이 쉽게 가능합니다. 스프링 컨테이너는 이러한 DI를 자동으로 처리해 개발 생산성을 크게 향상시킵니다.

반응형
Comments