개발쿠키

[Spring]BeanFactory와 ApplicationContext 본문

개발/spring boot

[Spring]BeanFactory와 ApplicationContext

쿠키와개발 2023. 8. 9. 15:37

스프링 컨테이너란?

스프링에서 관리하는 Bean의 생성과 소멸 등의 라이프사이클을 관리하며 IoC를 이용하여 애플리케이션 컴포넌트를 관리하는 일종의 관리자이다. 일반적으로 IoC 컨테이너 혹은 컨테이너라고 부른다. 우리가 흔히 말하는 스프링 컨테이너는 ApplicationContext를 의미한다. 

 

스프링에서는 BeanFactory와 이를 상속받은 ApplicationContext 이렇게 두개의 컨테이너를 활용할 수 있다. 우선 BeanFactory의 상속 구조를 알아보면 아래 이미지 구조로 되어있다. 

출처:스프링 핵심 원리-기본편(김영한) 강의자료

BeanFactory

Bean을 등록하는 방법은 xml 설정이나 자바 어노테이션을 통해서 가능하다. 이때 BeanFactory는 해당 객체들을 생성할 때 사용자의 요청이 있을 때 생성하는 지연로딩 방식으 생성한다. 

org.springframework.beans.factory

위의 패키지 경로로 들어가면 BeanFactory가 제공하는 메소드들을 확인할 수 있으며 대표적으로 getBean()을 통해 BeanFactory에 존재하는 객체들을 조회할 수 있다. 

 

ApplicaitionContext

BeanFactory를 상속받아 Bean을 관리하는 역할 뿐만 아니라 애플리케이션 개발시에 필요한 수많은 부가 기능들을 제공한다. 

ApplicaitionContext은 즉시 로딩으로 컨테이너 시작 시점에 모든 Bean들을 생성하여 관리한다. 

 

실무에서는 BeanFactory를 사용할 일은 거의 없고 ApplicaitionContext은 사용하며 사실 얘도 직접 사용할 일은 거의 없다...

 


참고자료

https://jjungslife.tistory.com/26