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

Dependency Injection

정의 의존성 주입(DI)은 객체가 자신의 의존성(함께 작업하는 다른 객체)을 생성자 인자, 팩토리 메서드 인자, 또는 생성 후 설정되는 프로퍼티를 통해서만 정의하는 프로세스다. 컨테이너가 Bean을 생성할 때 이 의존성들을 주입한다. 이 프로세스는 Bean이 직접 클래스를 생성하거나 Service Locator 패턴을 사용하여 의존성을 제어하는 것의 **역전(Inversion)**이다 — 이것이 IoC(Inversion of Control)라는 이름의 유래다. DI를 적용하면 코드가 깔끔해지고 디커플링이 효과적이다. 객체가 의존성의 위치나 클래스를 알지 못하므로, 특히 의존성이 인터페이스나 추상 클래스인 경우 스텁/모의 구현을 사용한 단위 테스트가 쉬워진다. ...

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