관리 메뉴

Developer Gonie

6. 스프링(Spring), 컨테이너의 종류 본문

K-DigitalTraining 강의/11. Spring

6. 스프링(Spring), 컨테이너의 종류

이대곤 2022. 8. 20. 14:59

스프링에 존재하는 컨테이너의 종류

* 스프링은 프로젝트를 실행하면 컨테이너라는 주체가 만들어지는데,

   이것은 스프링빈으로 등록된 객체들의 생명주기를 관리한다.

 

1) BeanFactory 인터페이스

프로젝트를 실행하여 컨테이너가 구동되더라도 스프링빈으로 등록된 모든 객체가 생성되지 않으며,

필요한 객체가 있다면 그때 그때 동적으로 생성한다.

 

2) ApplicationContext 인터페이스(대부분의 스프링 프로젝트가 이용하는 컨테이너)

BeanFactory와 유사하게 빈 정의를 로드하고, 빈을 연결하고, 의존관계에 따라 빈을 분배한다.

프로젝트를 실행하여 컨테이너가 구동되는 시점에 스프링빈으로 등록된 모든 객체를 생성한다.

(이를 즉시로딩 = pre-loading 이라고 함)

Bean Factory 인터페이스를 포함한 여러 인터페이스들을 상속받은 인터페이스로 더 많은 기능이 제공된다.

상속받은 인터페이스에 대한 각 기능을 알고싶다면 '더보기' 를 클릭.

더보기

<ApplicationContext가 상속받은 인터페이스>

 

- ResourcePatternResolver

  리소스를 읽어오기 위한 인터페이스


- EnvironmentCapable
  개발, 운영 등 환경을 분리해서 처리하고, 애플리케이션 구동 시 필요한 정보들을 관리하기 위한 인터페이스


- MessageSource
  메시지 다국화를 위한 인터페이스


- ApplicationEventPublisher
  이벤트 관련 기능들을 제공하는 인터페이스


각 인테페이스의 대표적인 구현 클래스

1) BeanFactory 인터페이스의 대표적인 구현 클래스

- XmlBeanFactory(deprecated : 사용이 추천되지 않음) : 
   XML 파일에 포함된 정의를 기반으로 빈을 로드함.

 

2) ApplicationContext 인터페이스의 대표적인 구현 클래스

- FileSystemXmlApplicationContext :
  XML 파일에서 빈의 정의를 로드, 사용시 주의점으로 생성자에 bean configuration XML 파일의 full path를 넘겨줘야 한다.

 

- ClassPathXmlApplicationContext :
  XML 파일에서 빈의 정의를 로드, 위의 것과 다르게 생성자에 bean configuration XML 파일의 full path가 아닌 파일명만
  넘겨도 된다. 대신, CLASSPATH를 적절하게 설정했는지 확인해야 한다. 왜냐면 필요한 XML파일을 CLASSPATH에서
   찾으려고 할 것이기 때문이다.

 

- WebXmlApplicationContext

   웹 애플리케이션 내에서 모든 빈의 정의가 포함된 XML 파일을 로드한다.(아직 무슨 의미인지 모르겠지만 그러함)

Comments