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

Bean Overview

정의 Spring IoC 컨테이너는 하나 이상의 Bean을 관리한다. Bean은 컨테이너에 공급된 설정 메타데이터(어노테이션, Java 설정, XML <bean/> 정의 등)를 기반으로 생성된다. 컨테이너 내부에서 Bean 정의는 BeanDefinition 객체로 표현되며, 다음 메타데이터를 포함한다: 패키지 수식 클래스명: Bean의 실제 구현 클래스 Bean 동작 설정: 스코프, 라이프사이클 콜백 등 컨테이너 내 동작 방식 다른 Bean에 대한 참조: 협력 객체(collaborators) 또는 의존성(dependencies) 기타 설정: 새로 생성되는 객체에 적용할 설정값 (예: 커넥션 풀 크기) BeanDefinition 프로퍼티 프로퍼티 설명 Class Bean 클래스 지정 (인스턴스화 방식 참조) Name Bean 네이밍 규칙 Scope Bean 스코프 (singleton, prototype 등) Constructor arguments 의존성 주입 (생성자 인자) Properties 의존성 주입 (프로퍼티 설정) Autowiring mode 자동 와이어링 모드 Lazy initialization mode 지연 초기화 설정 Initialization method 초기화 콜백 메서드 Destruction method 소멸 콜백 메서드 외부에서 생성된 객체 등록 ApplicationContext 구현체는 컨테이너 외부에서 이미 생성된 객체의 등록도 허용한다. getAutowireCapableBeanFactory() 메서드로 DefaultListableBeanFactory에 접근하여 registerSingleton(..), registerBeanDefinition(..) 메서드를 사용한다. ...

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