Spring Ioc Container

김국민·2025년 4월 4일

1. Spring IoC 컨테이너란?

Spring IoC 컨테이너는 객체의 생성과 의존성 주입을 관리하는 스프링 프레임워크의 핵심 요소이다.


2. IoC(Inversion of Control, 제어의 역전)란?

IoC는 객체의 생성, 생명 주기 및 의존성 주입을 개발자가 아닌 프레임워크가 담당하는 것을 의미한다.

장점:

  • 코드의 결합도를 낮추고 유지보수성을 향상
  • 개발자는 비즈니스 로직에 집중할 수 있음
  • 객체의 생성과 관리의 복잡성이 줄어듦

대표적인 IoC 구현 방식으로 DI(Dependency Injection, 의존성 주입)가 있다.


3. Spring IoC 컨테이너의 역할

  1. 객체 생성 및 관리
    • Bean(객체)을 생성하고 관리
  2. 의존성 주입(DI)
    • 객체 간의 의존성을 자동으로 주입하여 관리

4. IoC 컨테이너의 종류

1) BeanFactory

  • 스프링의 가장 기본적인 IoC 컨테이너 (핵심 인터페이스)
  • 빈의 생명 주기를 관리하며, 필요할 때만 객체를 생성하는 지연 로딩(Lazy Loading) 지원
  • 메모리 관리에 효율적 (객체가 필요할 때만 생성)

2) ApplicationContext

  • BeanFactory의 하위 인터페이스로, 더 많은 부가 기능을 제공
  • 대표적인 Spring 컨테이너
  • 빈 저장소를 내부적으로 관리하며, key-value 형태로 빈을 저장 (key: 빈 이름, value: 실제 객체)
  • 트랜잭션 관리, AOP, 이벤트 리스너 등의 기능 제공

💡 ApplicationContext는 객체를 미리 생성(Eager Loading)하므로 실행 속도가 빠르고, 대규모 애플리케이션에 적합


5. BeanFactory vs ApplicationContext 비교

비교 항목BeanFactoryApplicationContext
객체 생성 시점지연 로딩 (Lazy Loading)사전 로딩 (Eager Loading)
메모리 사용필요할 때만 객체 생성 (효율적)미리 객체 생성 (성능 최적화)
부가 기능기본적인 DI만 지원AOP, 트랜잭션 관리, 이벤트 리스너 등 지원
적합한 환경메모리 최적화가 중요한 환경 (임베디드)일반적인 웹 애플리케이션

BeanFactory → 메모리 효율이 중요할 때

ApplicationContext → 성능이 중요한 일반적인 웹 애플리케이션


6. 결론

  • Spring IoC 컨테이너는 객체 생성, 관리, 의존성 주입(DI)을 담당
  • BeanFactory: 경량 컨테이너, 지연 로딩으로 메모리 효율적
  • ApplicationContext: 확장된 기능 제공, 사전 로딩으로 성능 최적화

💡 일반적인 스프링 프로젝트에서는 ApplicationContext를 사용하는 것이 좋다! 🚀

profile
개발지망생

0개의 댓글