의존성 주입 (Dependency Injection)

artp·2024년 7월 31일
post-thumbnail

의존성 주입(DI)이란?

의존성 주입(Dependency Injection)은 객체 지향 프로그래밍에서 중요한 디자인 패턴 중 하나입니다. 의존성 주입은 객체가 필요로 하는 의존 객체를 외부에서 제공(주입)함으로써 객체 간의 결합도를 낮춥니다.

// MessageBean 클래스
public class MessageBean {
    // 생성자
    public MessageBean() {}

    // 메서드
    public void sayHello(String name) {
        System.out.println("Hello, " + name);
    }
}

// HelloApp 클래스
public class HelloApp {
    public static void main(String[] args) {
        // MessageBean 클래스를 사용하기 위해 new 연산자를 사용하여 객체 생성
        MessageBean bean = new MessageBean();
        // bean의 메서드 호출
        bean.sayHello("tiger");
    }
}

// 출력 결과
hello, tiger

위 코드에서 HelloApp 클래스는 MessageBean 객체를 new 연산자로 직접 생성하고, 해당 객체의 메서드를 호출합니다. 이렇게 내부에서 객체를 직접 생성하는 방식은 클래스 간의 강한 결합도를 초래하게 됩니다. 이 방식의 단점은, 나중에 수정이 필요할 때 객체를 생성한 모든 클래스의 코드를 수정해야 한다는 점입니다. 인터페이스를 사용하면 결합도를 어느 정도 낮출 수 있지만, 여전히 유지보수 측면에서 한계가 있습니다.

이 문제를 해결하기 위해 등장한 것이 의존성 주입(DI)입니다. 의존성 주입을 통해 객체는 필요한 의존 객체를 직접 생성하지 않고, 외부에서 주입받게 됩니다. 이로 인해 객체는 자신의 구현에만 집중할 수 있으며, 변경에도 유연하게 대응할 수 있습니다.

의존성 주입의 장점은 다음과 같습니다:

  • 코드의 재사용성 증가
  • 코드의 유지보수성 향상
  • 객체 간의 결합도 감소
  • 단위 테스트 용이성 증가

스프링 프레임워크는 이러한 의존성 주입 기능을 제공하여 일반적으로 널리 사용됩니다.

profile
donggyun_ee

0개의 댓글