AppConfig 처럼 객체를 생성하고 관리하면서 의존관계를 연결해 주는 것을 IoC 컨테이너 또는 DI 컨테이너라 한다.

의존관계 주입에 초점을 맞추어 최근에는 주로 DI 컨테이너라고 부른다. 또는 어샘블러, 오브젝트 팩토리 등으로 불리기도 한다.

IoC Container == DI Container

IoC를 해주는 컨테이너이자, 스프링 Bean을 생성 및 보관하는 장소

필요할 때마다 꺼내먹게 하는 등 스프링 Bean을 한 공간에 모아서 관리하는 공간이다.

Untitled


ApplicationContext

스프링 컨테이너는 호출 가능한 구체적인 객체인데, ApplicationContext가 그것이다.

ApplicationContext는 스프링 컨테이너이기 때문에, 이 객체를 이용하여 스프링 빈을 등록하고 호출할 수 있다. 이 때의 스프링 빈들은 모두 싱글톤 객체들이다. 즉, 하나의 인스턴스 객체만 생성되고 사용된다.

Untitled

스프링 컨테이너가 스프링 빈을 등록할 땐, Bean 어노테이션이 붙은 메서드의 이름을 따르고, 저장되는 빈 객체는 해당 메서드가 리턴하는 new 이하의 인스턴스다. 이 이름은 Bean 어노테이션의 name 파라미터로 설정할 수도 있지만 관례상 메서드의 이름을 그대로 쓰는 것이 보통이다.

빈 이름과 관련하여 주의할 점은, 빈 이름은 다른 빈의 이름과 겹쳐서는 안 된다는 것이다.

컨테이너에 등록된 빈 조회

스프링 빈들이 실제로 컨테이너에 잘 등록되었는지 확인하기 위해 Spring Core 기반으로 간단히 구현한 쇼핑몰 예제 코드를 기반으로 다음의 예제를 따른다.