Spring 핵심 원리 - IoC, DI

김태훈·2023년 1월 10일
0

Spring 핵심 원리

목록 보기
9/15

1. IoC

Inversion Of Control

  • 원래는 클라이언트 구현 객체가 (개발자가 직접) 객체를 연결하고, 실행했었다. 이게 자연스러우니까!!
    하지만, AppConfig로 좋은 객체 지향 원리를 적용함으로써 객체의 연결을 전적으로 AppConfig에게 넘기게 되었고, 사용영역과 구성영역이 분리되었다. 따라서 클라이언트 구현 객체들은 인터페이스를 호출할 뿐이고, 어떤 객체들이 실행될지 모르는 상태로 남아있게 된다.
  • 이제는 AppConfig가 모든 제어의 흐름을 가지게 된다. 결국 프로그램 제어의 흐름을 '외부'에서 관리하게 되었다는 것이다. 이를 IoC 라고 불리운다.

    프레임워크 vs 라이브러리

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

2. DI

Dependency Injection

의존관계는 정적인 클래스 의존 관계동적인 클래스 의존 관계 를 분리해서 생각해야 한다.

1. 정적인 클래스 의존 관계

각 클래스가 사용하는 import 되어지는 코드만 보고도 의존관계를 파악할 수 있다.하지만 의존 관계는 단지 인터페이스만 알뿐, 실제적으로 구현되는 객체와의 의존관계는 알 수 없다. 이는 동적 클래스 의존관계가 할 일이다.

2. 동적인 클래스 의존 관계

어플리케이션 실행 시점에 실제 생성된 객체 인스턴스가 연결되어 만들어진 의존관계를 말한다.
이 때, 외부에서 실제 구현 객체를 생성하고 클라이언트에 전달 후 클라이언트와 서버의 실제 의존 관계가 연결되는 것을 의존 관계 주입 (DI) 라고 한다.
따라서 이를 활용하여, 정적 클래스의 의존관계를 변경하지 않고 객체 인스턴스 의존관계를 바꿀 수 있다.

profile
기록하고, 공유합시다

0개의 댓글