프로그램을 구동하는데 필요한 객체에 대한 생성, 변경 등의 관리를 프로그램을 개발하는 사람이 아닌 프로그램을 구동하는 컨테이너에서 직접 관리하는 것을 말한다.

스프링은 IoC 구조를 통해 구동 시 필요한 객체의 생성부터 생명 주기까지 해당 객체에 대한 관리를 직접 수행한다.

IOC 컨테이너

<aside> 💡 **스프링에서는 관리하는 객체를 'Bean(빈)'**이라고 하고, **해당 빈들을 관리한다는 의미로 컨테이너를 'Bean Factory'**라고 한다.

</aside>

역할

  1. 객체의 생명주기와 의존성을 관리한다.
  2. VO(DTO/POJO) 객체의 생성, 초기화, 소멸 등의 처리를 담당한다.
  3. 개발자가 직접 객체를 생성할 수 있지만 해당 권한을 컨테이너에 맡김으로써 소스 코드 구현의 시간을 단축할 수 있다.

IoC컨테이너와 Bean객체