Spring Core - 스프링 컨테이너

목차

스프링 컨테이너와 IoC(Inversion of Control)

객체의 생성, 객체간의 의존성 과 같은 프로그램의 흐름 을 개발자가 아니라 프레임워크나 외부 컨테이너에가 관리 해주는 것을 의미합니다. 즉, 프로그램에 대한 제어권이 개발자가 아니라 프레임워크나 외부 컨테이너에서 관리가 됩니다.

스프링의 핵심요소인 스프링 컨테이너는 객체의 생성과 관리, 의존성 주입, 생명주기등을 해주기 때문에 IoC 컨테이너 라고 불립니다.

스프링 컨테이너의 주요 기능

스프링 컨테이너는 객체를 생성하고 컨테이너에 등록합니다. 이때, 스프링 컨테이너에 등록된 객체들을 스프링 Bean 이라 부르고 컨테이너는 등록된 Bean 의 생성, 초기화, 소멸까지의 전체적인 생명주기를 관리합니다.

스프링 Bean 들이 생성된 후 스프링 컨테이너는 객체간의 관계를 확인 후 설정에 따라 의존성을 주입합니다. Bean 으로 등록되지 않은 객체에 대해서는 의존성 주입이 이뤄지지 않습니다.

코드를 통해 알아보기 - 생성자를 통한 의존성 주입

스프링 컨테이너는 아래 코드가 동작하게 만들어줍니다. 코드를 보면 OwnerController 는 OwnerRepository 객체를 의존하는 상황에서 스프링 컨테이너는 개발자 대신 객체를 생성하고 의존관계를 설정해줍니다. 즉, OwnerRepository 객체를 생성하고 OwnerController 에 주입합니다.

IoC 컨테이너는 이런 객체 (Bean) 를 생성하고 의존성을 관리해줍니다.

class OwnerController {
// new 를 통해 개발자가 직접 객체를 생성하지 않습니다.
private OwnerRepository repo;

// OwnerRepository 를 외부로 부터 주입받는다.
// 생성자 주입을 통해 OwnerRepository 객체를 넣어줍니다.
@Autowired
public OwnerController(OwnerRepository repo) {
this.repo = repo;
}
// repo를 사용합니다.
}

싱글톤 컨테이너

싱글톤(SingleTon) 은 클래스의 인스턴스가 1개만 생성되는 것을 보장판 디자인 패턴

스프링 컨테이너는 객체 생성시 싱글톤으로 생성 및 관리합니다. 때문에 스프링 컨테이너는 싱글톤 컨테이너, 싱글톤 레지스트리라 불리기도 합니다.

Share