의존관계 주입(DI)

szlee·2023년 10월 23일
0

Spring

목록 보기
4/15

스프링 IoC 기능의 대표적인 동작원리는 주로 의존관계 주입(의존관계 설정)이라고 불린다.
스프링이 다른 프레임워크와 차별화돼서 제공해주는 기능이 의존관계 주입!
따라서 초기에는 주로 스프링이 IoC 컨테이너라고 불렸지만 지금은 DI 컨테이너로 많이 불리고 있다.



의존관계란 무엇인가?

A가 B에 의존한다.
= B의 기능이 추가되거나 변경되거나 형식이 바뀌거나 하면 그 영향이 A로 전달된다.
ex) A가 B를 사용하는 경우, 즉 A에서 B에 정의된 메서드를 호출해서 사용하는 경우.



DI 사용 이유?

https://velog.io/@roro/DI-Dependency-Injection-%EC%82%AC%EC%9A%A9%EC%9D%B4%EC%9C%A0



생성자를 이용한 의존 관계 주입

DI 컨테이너는 A를 만드는 시점에서 생성자의 파라미터로 이미 만들어진 B의 오브젝트를 전달한다.
정확히는 B 오브젝트의 레퍼런스가 전달되는 것이다.

주입 : 외부에서 내부로 무엇인가 넘겨준다.
자바에서 오브젝트에 무엇인가 넣어주는 개념 : 메서드를 실행하면서 파라미터로 오브젝트의 레퍼런스를 전달해주는 방법 뿐.

가장 손쉽게 사용할 수 있는 파라미터 전달이 가능한 메서드는 바로 생성자!

DI 컨테이너는 자신이 결정한 의존관계를 맺어줄 클래스의 오브젝트를 만들고 이 생성자의 파라미터로 오브젝트의 레퍼런스를 전달해준다.
이렇게 생성자 파라미터를 통해 전달받은 런타임 의존관계를 갖는 오브젝트는 인스턴스 변수에 저장해둔다.
DI는 자신이 사용할 오브젝트에 대한 선택과 생성 제어권을 외부로 넘기고 자신은 수동적으로 주입받은 오브젝트를 사용한다. => IoC



메서드를 이용한 의존관계 주입

  • 수정자 메서드를 이용한 주입 : setter사용
  • 일반 메서드를 이용한 주입




토비의 스프링

profile
🌱

0개의 댓글