Spring IoC 컨테이너와 Bean

정의 IoC(Inversion of Control) 는 객체가 자신의 의존성을 직접 생성하거나 찾는 대신, 외부(컨테이너)로부터 주입받는 원칙이다. DI(Dependency Injection) 는 IoC의 구체적인 구현 형태로, 객체가 의존성을 다음 방식으로만 정의한다: 생성자 인자(constructor arguments) 팩토리 메서드 인자 생성/반환 후 설정되는 프로퍼티 IoC 컨테이너가 Bean 생성 시 이 의존성들을 주입한다. 이는 Bean이 직접 클래스를 생성하거나 Service Locator 패턴을 사용하는 것과 근본적으로 반대(inverse) 되는 프로세스다. 동작 원리 BeanFactory vs ApplicationContext 구분 BeanFactory ApplicationContext 역할 설정 프레임워크 + 기본 기능 BeanFactory의 완전한 상위 집합 AOP 통합 기본적 쉬운 통합 메시지 리소스 미지원 국제화(i18n) 지원 이벤트 발행 미지원 이벤트 퍼블리케이션 지원 애플리케이션 컨텍스트 없음 WebApplicationContext 등 제공 실무에서는 ApplicationContext를 사용한다. BeanFactory는 설정 프레임워크와 기본 기능만 제공하고, ApplicationContext가 엔터프라이즈에 필요한 기능을 추가한다. ...

2026년 4월 11일 AM12:00 · 🛠 업데이트: 2026년 4월 12일 PM10:43 · PolarBear

Spring IoC Container Overview

정의 org.springframework.context.ApplicationContext 인터페이스가 Spring IoC 컨테이너를 대표한다. 컨테이너는 Bean의 인스턴스화, 설정, 조립을 담당하며, 어떤 컴포넌트를 어떻게 구성할지는 설정 메타데이터(Configuration Metadata) 를 읽어서 판단한다. 설정 메타데이터는 어노테이션 기반 컴포넌트 클래스, 팩토리 메서드가 있는 설정 클래스, 외부 XML 파일, Groovy 스크립트 등으로 표현할 수 있다. 동작 원리 컨테이너의 작동 흐름 애플리케이션 클래스(POJO)와 설정 메타데이터를 조합하여 ApplicationContext를 생성·초기화하면, 완전히 설정된 실행 가능한 시스템이 만들어진다. graph LR A[애플리케이션 클래스POJO] --> C[ApplicationContext] B[설정 메타데이터Annotation/Java/XML] --> C C --> D[완전히 설정된실행 가능한 시스템] ApplicationContext 구현체 Spring 코어에는 여러 ApplicationContext 구현체가 포함되어 있다. ...

2026년 4월 11일 AM12:00 · 🛠 업데이트: 2026년 4월 11일 AM02:31 · PolarBear