여니의 프로그래밍 study/Spring & Spring Boot

[스프링부트] loC, DI, 컨테이너

여니's 2022. 1. 15. 21:23

출처

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


loC (Inversion of Control) : 제어의 역전

: 기존 프로그램은 구현 객체가 스스로 서버 구현 객체를 생성하고 연결, 실행까지 하며

모든 제어 흐름을 스스로 조종했다.

그러나 AppConfig가 등장하고 난 이후로는

AppConfig가 프로그램의 제어 흐름을 조종한다.

따라서 구현 객체(OrderServiceImpl)는 인터페이스들을 호출은 하지만

어떤 구현 객체들이 실행되고 있는지를 모른다. 


DI (Dependency Injection) : 의존관계 주입

>> 실행시점에 외부에서 실제 구현 객체를 생성하고

클라이언트에 전달해서 클라이언트와 서버의 실제 의존관계가 연결되는 것

 

(1) 정적인 클래스 의존관계

: 애플리케이션을 실행하지 않아도 분석할 수 있다.

코드만 보고 의존관계를 쉽게 판단할 수 있다.

 

(2) 동적인 클래스 의존관계

: 실행 시점에 실제 생성된 객체 인스턴스의 참조가 연결된 의존관계이다.

 


loC 컨테이너, DI 컨테이너

: AppConfig처럼 객체를 생성하고 관리하면서 의존 관계를 연결해주는 것

의존관계 주입에 초점을 맞춰서 최근에는 주로 DI 컨테이너라 부른다.