설명 순서는 다음과 같습니다.

1. IOC란
2. IOC 컨테이너
3. DI란
4. IOC와 DI의 핵심

1. IOC란

   - Inversion Of Control의 줄임말로 직역하면 '제어의 반전' 이라는 뜻임

   - 그렇다면 제어가 어떻게 반전됐다는 걸까?

   - 일반적인 프로그램에서 제어권(객체의 생성 및 관리)는 개발자가 직접 해야함

   - 하지만, 스프링 프레임워크를 사용하면 이러한 제어권을 스프링이 갖게 됨

   - 이렇게, 프로그램의 제어권이 개발자에서 스프링이 쥔 것을 IOC라고 함

 

2. IOC 컨테이너

   - 이제 스프링 프레임워크가 제어권을 쥐고 객체의 생성과 관리를 담당함

   - 스프링에서 생성한 객체를 보관하고 관리하는 곳이 IOC 컨테이너임

   - 그리고 이 IOC 컨테이너에 등록되는 객체를 Bean이라고 부르고, 이 Bean들은 싱글톤으로 관리됨

   - 싱글톤 패턴이란

      * 클래스의 인스턴스가 딱 하나만 생성되는 것을 보장하는 디자인 패턴

      * 장점은 서버의 경우 요청마다 객체가 생성되고 소멸될 경우 메모리 낭비가 심한데, 이를 줄여줌

 

3. DI란

   - Dependency Injection의 줄임말로 직역하면 '의존성 주입'이라는 뜻임

   - IOC 컨테이너에서 한 객체를 생성해서 Bean으로 등록하는 과정에서, 그 객체에 필요한 다른 객체를 생성해서 넣어주는 과정이 DI임

   - 쉽게 말하면, 필요한 객체들을 생성한 후에 조립하는 과정이 DI임

 

4. IOC와 DI의 핵심

   - Spring에서 IOC와 DI를 도입한 이유는 프로그램의 제어권을 Spring이 받음으로써 개발자는 온전히 개발에만 집중할 수 있게 하기 위해서임

   - 그래서 개발자는 개발을 담당하고, Spring은 객체의 생성과 관리를 담당

   - 개발자와 프레임워크 사이에 역할을 명확히 나눈 것임


IOC와 DI에 대해 알아볼 수 있었습니다. 

'Spring' 카테고리의 다른 글

AOP (2)  (1) 2023.08.28
AOP (1)  (0) 2023.08.25
[Spring MVC 1편(김영한)] WAS, Servlet이란?  (0) 2023.04.12

+ Recent posts