✏️ 노트/spring

[Spring] DI(Dependency Injection)

키루루 2023. 11. 3. 00:49

※ 본 내용은 강의를 수강하며 정리한 글입니다 👉 강의 링크


DI (Dependency Injection)

DI는 ‘종속성 주입’, 결론부터 말하자면 ‘부품 조립’에 해당한다.

 

Dependency = 종속성

Injection = 주입

 

두 단어 모두 난해하게 느껴진다.

아래에서 두 단어가 각각 의미하는 바를 알아보도록 하자.

 

Dependency = 종속성 = 부품

프로그램은 객체들의 조립관계로 만들어진다. 객체는 곧 부품이다.

이를테면, A class에서 B를 객체화해서 사용하는 경우를 생각해보자.

 

1. 일체형 관계 (A class가 생성될 때 A가 직접 B를 생성해서 사용)

class A
{
    private B b;

    public A() {
        b = new B();
    }
}

 

2. 조립형 관계 (A 객체에 B 객체를 조립할 수 있는 메서드(setter = setB)를 제공)

class A
{
    private B b;

    public A() {
    }
    public void setB(B b) {
            this.b = b;
    }
}

위 두가지 방법이 있을 수 있다.

 

여기서 B는 A의 부품(Dependency)이다.

Dependency = 종속성 = 종속 개체

그래서 DI가 왜 중요할까?

 

개발을 할 때 일체형보다는 조립형이 결합도가 낮아지므로, 이를 선호하는 경향이 있다.

아무튼 조립형 관계를 많이 사용한다는 뜻이다.

그리고 조립형의 경우, A라는 객체에 B라는 객체(B=부품)을 조립해주는 과정이 필요하다.

코드로 표현하면 아래와 같다.

 

B b = new B();
A a = new A();

a.setB(b);

 

B 객체를 조립해서 A 객체에 주입하는 과정이 바로 DI인 것이다.

다시 정리하자면 이 때, 부품인 B 객체를 Dependency라 하고,

이 부품을 A 객체에 조립 = 주입 = Injection 이라 한다.

 

Injection = 주입 = 조립

injection의 방법에는 두가지가 있다.


정리

Spring의 주요 기능은 DI, 즉 Dependency(부품)을 Injection(조립)해주는 역할을 하는 것이다.

사용자가 원하는 부품이 뭐가 있는지, 또 어떤 결합을 하기를 원하는지만 설정해주면 Spring이 조립의 과정을 알아서 해준다.

 

조금만 더 구체적으로 말하자면,

스프링은 결합을 할 때 필요한 설정 파일을 제공하고, 객체를 결합해주는 역할을 한다.

여기서 말하는 '설정 파일'은 아래 링크에서 언급한 '외부 설정 파일'과 비슷한 기능일 것이다.

https://heyitzme.tistory.com/39

 

[Java] 인터페이스의 구현 - 코드 수정을 없애기 위한 설정

※ 본 내용은 강의를 수강하며 정리한 글입니다 👉 강의 링크 https://heyitzme.tistory.com/38 [Java] 인터페이스의 구현 ※ 본 내용은 강의를 수강하며 정리한 글입니다 👉 강의 링크 초기 상태 초기 상

heyitzme.tistory.com