[ Spring ] Spring Container의 종류

duck-ach·2022년 10월 27일
0

Spring

목록 보기
5/16
post-custom-banner

Spring Container란?

Spring Container(스프링 컨테이너)란 스프링에서 자바 객체들을 관리하는 공간을 말한다. Spring Container에서는 Bean의 생성부터 소멸까지를 개발자 대신 관리해주는 곳이라고 할 수 있다.

  • 자바 객체를 담고 있다.
  • 언제든지 스프링 컨테이너로부터 필요한 객체를 가져와 사용할 수 있다.
  • Bean들의 생명주기를 관리한다.
  • Spring Container는 어플리케이션을 구성하는 Bean들을 관리하기 위해 IoC를 사용한다.
이름설명
Ioc(Inversion of Control)개발자는 New 연산자, 인터페이스 호출, 팩토리 호출방식으로 객체를 생성하고 소멸시킨다. IoC란 인스턴스의 생성부터 소멸까지의 객체 생명주기 관리를 개발자가 하는 대신 스프링(컨테이너)가 관리하는 것을 말한다.
DI(Dependency Injection)IoC를 실제로 구현하는 방법으로서 의존성있는 컴포넌트들 간의 관계를 개발자가 직접 코드로 명시하지 않고 컨테이너인 Spring이 런타임에 찾아서 연결해주게 하는 것

Spring Container의 종류

크게 우선 BeanFactoryApplicationContext 두 종류로 나눌 수 있다.

BeanFactory

BeanFactory는 Bean을 등록하고 생성하고 조회하고 돌려주는 등 Bean을 관리하는 역할을 한다. getBean() 메소드를 통해 Bean을 인스턴스화 할 수 있다.

  • 빈을 등록하고 생성하고 조회하고 돌려주고 그 외에 부가적인 빈을 관리하는 기능을 담당한다.
  • getBean()이 호출되면 팩토리는 의존성 주입을 통해 Bean을 인스턴스화하고, 빈의 특성을 설정하기 시작한다. (여기서 Bean의 일생이 시작)

ApplicationContext

ApplicationContext 컨테이너가 BeanFactory의 기능을 포괄하면서 추가적인 기능을 제공하기 때문에 ApplicationContext를 대부분 사용한다.

  • BeanFactory를 상속한, BeanFactory를 확장한 향상 된 컨테이너이다.
  • 기본적인 기능은 BeanFactory와 동일하고, 스프링이 제공하는 각종 부가 서비스를 추가로 제공한다.
    • 국제화가 지원되는 메시지를 관리해준다.
    • 이미지같은 파일 자원을 로드 할 수 있는 포괄적인 방법을 제공해준다.
    • 리너스로 등록된 Bean에게 이벤트 발생을 알려준다.

BeanFactory와 ApplicationContext의 차이점

  • BeanFactory : 처음으로 getBean()이 호출된 시점에서야 해당 Bean을 생성(lazy loading)
  • ApplicationContext : 컨텍스트 초기화 시점에 모든 Singleton Bean을 미리 로드한 후 애플리케이션 기동 후에는 Bean을 지연 없이 얻을 수 있다. (미리 Bean을 생성해 놓아 Bean이 필요할 때 즉시 사용할 수 있도록 보장)
profile
자몽 허니 블랙티와 아메리카노 사이 그 어딘가
post-custom-banner

0개의 댓글