TIL/스프링 핵심원리 - 기본편 with 인프런(김영한님)

스프링 핵심원리 기본편4 - IoC, DI 그리고 컨테이너

JJONGSTORY 2024. 6. 27. 12:06
반응형

안녕하세요 오늘의 강의 내용인 Ioc, DI 그리고 컨테이너에 대해 정리해 보도록 하겠습니다.

 

제어의 역전 IoC(Inversion of Control)

기존 프로그램은 클라이언트 구현 객제가 스스로 필요한 서버 구현 객체를 생성, 연결 실행했습니다.

즉 구현객체가 프로그램의 제어 흐름을 스스로 조종

제어의 역전은 프레임 워크같은 것들이 대신 제어 하는 것입니다.

이와 같은 제어의 역전이 나타나게 된 이유는 구현 객체는 자신의 로짓을 실행하는 역할만 담당하고 프로그램의 제어 흐름은 AppConifg가 가져가게 되면서 생겨나게 되었습니다.

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

* 라이브러리는 제어의 역전이 아니다. 내가 작성한 코드가 직접 제어의 흐름을 담당하기 때문

 

의존관계 주입 DI

impl이 인터페이스에만 의존하게 만들기 때문에 실제 어떤 구현 객체가 사용되었는지 모르는다.

의존 관계는 "정적인 클래스 의존 관계와, 실행 시점에 결정되는 동적인 객체(인스턴스) 의존 관계" 들을 분리해서 생각해야 한다.

 

- 정적인 클래스 의존관계

   > 클래스가 사용하는 import코드만 보고 의존관계를 쉽게 판단(툴에 클래스 다이어그램기능이 있다면 실행 없이도 파악         이 가능)

   > 클래스 의존관계 만으로는 실제 어떤 객체가 Impl에 주입될지 알 수 없다.

 

-동적인 객체(인스턴스) 의존 관계

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

       

* 의존관계 주입 : 애플리케이션 실행 시점에 외부에서 실제 구현 객체를 생성 클라이언트에 전달 클라이언트와 서버의

                            실제 의존관계가 연결되는 것(객체 인스턴스를 생성 그 참조 값을 전달하여 연결) 해당 기능을 통해 

                            정적인 클래스 의존관계를 변경하지 않고 동적인 객체 인스턴스 의존관계를 쉽게 변경할 수 있다. 

 

Ioc/DI 컨테이너

AppConfig처럼 객체를 생성 관리하며 의존관계를 연결해 주는 것 보통은 의존관계 주입인 DI 컨테이너로 불린다.

어샘블러, 오브젝트 팩토리 등으로 많이 불리기도 한다.

 

다음시간에는 DI 컨테이너 중 하나인 스프링으로 지금까지 만든 소스를 변경해 보겠습니다.

 

참조

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard

 

스프링 핵심 원리 - 기본편 강의 | 김영한 - 인프런

김영한 | 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., 스프링 핵심 원리를 이해하고, 성장하는 백엔드 개발자가 되어보

www.inflearn.com

 

반응형