본문 바로가기
Category/Spring

[Spring] 스프링 컨테이너

by developer__Y 2023. 12. 15.

스프링 컨테이너(Spring Container)

앞서 스프링 빈(Bean)을 이용해 Spring Bean Configuration File.xml 파일에서

객체들을 빈(Bean)에 직접 담아놓은뒤, 자바 main 메소드에서 다음과 같이 꺼내왔다.

 

여기서 AbstractApplicationContext는 GenericXMLApplicationContext의 하위 인터페이스이고,

GenericXMLApplicationContext 는 Bean의 제어와 빈 생성을 담당하는 최상위 클래스인 BeanFactory로 부터 상속받은

인터페이스이다. 즉, 이러한 ApplicationContext가 스프링 컨테이너라고 할 수있다.

빈팩토리로부터 상속받은 하위 인터페이스들은 각각의 기능에따라 여러 갈래로 나뉘어지고, 그중 

GenericXmlApplicationContext를 통해 원하는 객체들을 xml 파일에 설정하면서 (= 스프링 컨테이너에 내가 사용할 객체들을 담았다) 스프링 컨테이너가 이후 해당 객체들을 제어하고 필요할때 주입하는 방식으로 사용한다.

 

 

 

스프링 빈의 생명주기 : 생성 - 설정 - 사용 - 소멸

스프링 컨테이너는 Bean 객체들을 관리하면서 의존성을 주입해준다.

그러므로 스프링 컨테이너는 해당 객체의 생성부터 소멸까지의 전체 생명주기를 관리해준다.

스프링 컨테이너의 생성주기는 생성 - 설정 - 사용 - 소멸로 이루어진다.

 

1. 생성 

 : GenericXMLApplicationContext 객체를 생성한 시점이다.

2. 설정

:  load() 메소드를 통해 xml파일의 classpath을 읽어들인다.

위의 코드에서는 객체를 생성과 동시에 생성자로 classpath를 넣어줘 생성과 설정을 동시에 하였다.

3. 사용

: getBean() 메소드를 이용하여 사용할 객체를 반환받는다.

스프링 컨테이너에 등록한 객체를 주입받기위해 getBean(객체명,클래스명) 메소드를 통해 사용할 객체를 반환받았다.

 

4. 소멸

이후 close() 메소드를 통해 스프링 컨테이너를 종료한다.