IoC/DI에 대한 간단한 예시

박채은·2023년 1월 30일
0

IoC = 제어의 역전
DI = 의존성 주입

이라는 것을 기억하고 아래의 예시를 보자!

new 키워드를 사용하면, 개발자가 직접 heap이라는 메모리에 Object를 생성하는 것이다.
-> 주도권이 개발자에게 존재

"method1의 의자"와 "method2의 의자"는 같지 않다.
메서드가 본인들의 의자 객체의 주소를 관리하게 된다.

이렇게 되면 하나의 메서드 내부에서는 객체를 공유할 수 있으나, 다른 클래스나 메서드에 객체를 공유하는 것이 어려워진다.

상상해보자.
method1에 있는 의자 객체를 method2나 다른 클래스와 공유하려면, 매개변수로 넘겨 주거나 클래스를 import 해줘야 할 것이다.
그렇게 수많은 변수를 공유하기 시작한다면, 매우 귀찮을 것이다.

이런 불편한 점을 Spring IoC가 해결해준다.

Spring은 개발자가 생성해둔 여러 클래스들을 모두 읽어서 한 메모리 공간에 올려준다.
=> Spring IoC

이때, 메모리에 올려두었기 때문에 해당 Object들은 메서드에서 관리하는 것이 아니라 Spring에서 관리하게 된다.
=> 원래는 주도권이 개발자에게 있었는데, 이제는 Spring에게 존재함
=> 제어의 역전

IoC를 통해서, 메모리(heap)에 Object를 올려줬다면 해당 Object들을 공유해서 사용할 수 있도록 해주는 것이 DI이다.

의자 객체는 method1, method2, method3에 공유될 수 있으며 한 번만 생성된 Object가 여러 곳에서 사용되는 것이므로 싱글톤이다.


[참고]
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%EA%B0%9C%EB%85%90%EC%A0%95%EB%A6%AC/

0개의 댓글