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 |