[스프링 핵심원리 기본편] 3.(4) 제어의 역전(IoC), 의존관계 주입(DI), 컨테이너

코린이서현이·2023년 11월 11일
0

👋들어가면서👋

🎯 목표

📌 제어의 역전 : IoC
📌 의존 관계 주입 : DI 
📌 컨테이너

📌 제어의 역전 : IoC

프래그램이 제어 흐음을 직접 제어하는 것이 아니라 외부에서 관리하고 제어하는 것을 제어의 역전이라고 한다.

  • appConfig 으로 구현 객체는 자신의 로직만 담당한다.
  • 프로그램의 제어 흐음에 대한 권한은 appConfig가 담당한다.

🤔 프레임 워크 vs 라이브러리

  • 프레임워크 : 내가 작성한 코드를 제어하고, 대신 실행한다.
  • 라이브러리 : 내가 작성한 코드가 직접 제어의 흐름을 담당한다면 라이브러리다.

🔍 Junit 👉 나의 코드를 사용해서 대신 실행해준다 ➡️ 프레임워크

@BeforeEach
~~~
@Test
~~~

🔍 의존관계에 대해서

📒 정적인 클래스 의존 관계

클래스의 코드를 보고 실행전에 의존관계를 판단할 수 있다.

클래스 다이어그램

📒 동적인 객체 의존 관계

애플리케이션 실행 시점에 실제 생성된 객체 인스턴스의 참조가 연결된 의존 관계이다.
객체 다이어그램

📌 의존관계 주입 : DI

💉 의존관계 주입 : DI

  • 애플리케이션 실행 시점에 외부에서 실제 구현 객체를 생성하고 클라이언트에 전달해서, 클라이언트와 서버의 실제 의존관계가 연결되는 것이다.
  • 객체 인스턴스를 생성하고, 참조값을 전달해서 연결한다.

의존관계 주입을 사용하면
👉 클라이언트의 코드를 변경하지 않고, 클라이언트가 호출하는 대상의 인스턴스를 변경할 수 있다.
👉 정적인 클래스 의존관계를 변경하지 않고, 동적인 객체 인스턴스 의존관계를 쉽게 변경할 수 있다.

📌 DI 컨테이너

🤔 IoC 컨테이너 또는 DI 컨테이너

  • AppConfig 처럼 객체를 생성하고 관리하면서 의존관계를 연결해 주는 것
  • 의존관계 주입에 초점을 맞추어 최근에는 주로 DI 컨테이너라고 한다.
  • 또는 어샘블러, 오브젝트 팩토리 등으로 불리기도 한다
용어가 많네.. 쩝

🔍 appConfig 👉 흐름을 제어하고, 객체를 생성•관리, 의존관계를 연결해준다.
➡️ DI 컨테이너

👋 마무리하면서

집중집중!!
profile
24년도까지 프로젝트 두개를 마치고 25년에는 개발 팀장을 할 수 있는 실력이 되자!

0개의 댓글