
과거에는 객체 지향 프로그래밍(OOP)을 하더라도 객체의 생성, 조립, 생명주기 관리를 개발자가 직접 처리해야 했습니다.
즉, 필요한 객체를 직접 new로 생성하고, 서로 연결(의존성 주입)하며, 객체의 생성/소멸 시점도 직접 관리했습니다.
이 과정은 코드가 복잡해지고, 객체 간 결합도가 높아져 유지보수가 어려웠습니다.
IoC(Inversion of Control, 제어의 역전)란
기존에는 개발자가 직접 객체의 생성과 의존성 연결을 제어했지만,
이제는 스프링 프레임워크가 객체 생성과 의존성 주입, 생명주기 관리를 대신 맡는 원칙
스프링이 객체를 관리하려면, 객체들을 모아두고 관리하는 공간이 필요합니다.
이 역할을 하는 것이 바로 IoC Container(컨테이너)
BeanFactory와 ApplicationContext가 있습니다.컨테이너가 관리하는 객체를 Bean(빈)
@Component, @Service 등)이나 설정을 추가하면 됩니다.DI(Dependency Injection, 의존성 주입)는
스프링 컨테이너가 Bean 간의 의존성을 자동으로 연결
| 용어 | 설명 |
|---|---|
| IoC(제어의 역전) | 객체 생성/관리를 개발자가 아닌 프레임워크(스프링)가 담당하는 원칙 |
| Container | Bean을 생성·관리·조립하는 스프링의 핵심 공간(BeanFactory, ApplicationContext) |
| Bean | 컨테이너가 관리하는 객체(스프링이 생성, 조립, 관리하는 애플리케이션 구성요소) |
| DI(의존성 주입) | 컨테이너가 Bean 간의 의존성을 자동으로 연결해주는 방식 |