본문 바로가기

개발/Spring

IoC 컨테이너란?

IoC (Inversion of Control, 제어의 역전)는 무엇일까?

이름에서 알려주는 뉘양스를 최대한 사용하여 표현해보겠다.

IoC 제어의 역전이란, 개발자가 갖고 있던 제어권을 놓는다는 의미와 비슷하다.

우리는 Servlet과 같은 방식을 활용하여 코드를 짠다. 그 속에서는 객체를 생성하고 활용하는 등의

행위가 포함되어 있다.

코드를 짤 때는 그런 행위의 제어권이 개발자에게 있지만, 그 코드를 실행하거나 배포를 한 이후의 상황에서는

개발자에게 제어권한이 없다.

이러한 상황에서 제어권을 컨테이너가 갖게 된다.

컨테이너는 객체의 생성, 관리 등을 하게 되며 IoC가 발생하게 되는 것이다.

 

IoC/DI란?

위의 설명을 잘 이해했다면, IoC와 DI가 같이 쓰이는 이유도 대충 감이 올 것이다.

컨테이너가 관리하는 객체들을 주입하게 되면 그 과정을 의존성 주입이라고 한다.

때문에 IoC와 DI는 상당히 밀접한 관계가 있을 것이고, 뗄 수 없는 관계가 된다.

 

추가적으로

Spring과 연관지어서 한번 더 설명하고 마무리하자면, Spring에서는 Bean이라는 것이 있다.

Bean이란 컨테이너가 관리하는 객체라고 정의한다.

 

Spring에서 IoC컨테이너는 BeanFactory이고, 애플리케이션 컴포넌트의 중앙 저장소이다.

빈 설정 소스로부터 빈 정의를 읽어드리고, 빈을 구성하고 제공한다.

즉, Bean에서 정의한 설정 소스를 통해 컨테이너는 Spring의 객체의 관리 등과 같이 전반적인 관리를 하게 된다.

 

'개발 > Spring' 카테고리의 다른 글

[Spring] 인프런 8차 Event  (0) 2020.12.25
[Spring] 인프런 3차 강의  (0) 2020.12.24
[Spring] 인프런 2차 강의  (0) 2020.12.24
의존성 2 in Spring  (0) 2020.11.03
의존성이란  (0) 2020.11.02