Category/Spring

[Spring] 스프링 컨테이너

developer__Y 2023. 12. 15. 12:46

스프링 컨테이너(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() 메소드를 통해 스프링 컨테이너를 종료한다.