본문 바로가기
Spring

[Spring/스프링] 스프링 컨테이너, ApplicationContext

by LasBe 2022. 4. 5.
반응형

⚡️스프링 컨테이너


스프링 컨테이너는 자바 객체를 빈이라는 이름으로 관리합니다.

 

빈의 전반적인 생명주기와 스프링의 주요 개념인 제어의 역전(IoP), 관점 지향 프로그래밍(AOP)을 이용하여

프로그램을 제작할 수 있도록 자체적으로 다양한 기능을 지원합니다.

 

 

 

⚡️컨테이너의 종류


스프링에서는 BeanFactory와 이를 상속한 ApplicationContext 두 가지 유형의 컨테이너를 제공합니다.


📌 BeanFactory

BeanFactory는 스프링 설정 파일에 등록된 빈 객체를 생성하고 관리하는 기본적인 기능만 제공하는 컨테이너입니다.

 

이 컨테이너에서 핵심은 지연 로딩(Laze Loading) 방식을 사용한다는 점입니다.

 

컨테이너가 구동될 땐 빈의 정의만 등록해두고 클라이언트의 요청에 의해서만 빈 객체를 인스턴스화 합니다.

 

즉, BeanFactory의 getBean() 메소드를 호출하면 이 시점에서 객체에 의존성을 주입하고 빈을 등록하게 됩니다.


📌 ApplicationContext

ApplicationContext는 BeanFactory에게 상속받은 빈 객체 관리 기능 외에도

트랜젝션 관리나 메세지 기반의 다국어 처리 등 추가적인 기능을 제공하는 인터페이스입니다.

 

또한 컨테이너가 구동되는 시점에 객체를 바로 빈으로 등록하는 즉시 로딩(pre-loading) 방식으로 동작합니다.

 

즉시 로딩방식으로 동작하기 때문에 컨텍스트 초기화 시점에 모든 빈들을 등록하고,

getBean() 호출 시 바로 빈을 받아올 수 있게 됩니다.

 

웹 애플리케이션 개발도 지원하기 때문에 대부분 스프링 프로젝트는 ApplicationContext 유형의 컨테이너를 이용합니다.

 

ApplicationContext의 구현 클래스 다양하게 존재하지만 그 중 많이 사용하는 일부만 알아보겠습니다.


🔎 AnnotationConfigApplicationContext

ApplicationContext factory = 
	new AnnotationConfigApplicationContext(클래스명.class); 
    
BeanClass scanBean = factory.getBean("beanClass", BeanClass.class);

자바 어노테이션을 이용한 설정 클래스로부터 등록할 빈들의 정보를 받아오는 컨테이너입니다.


🔎 GenericXmlApplicationContext

GenericXmlApplicationContext factory = 
	new GenericXmlApplicationContext("classpath:패키지명/XML파일명.xml");
    
BeanClass scanBean = factory.getBean("beanClass", BeanClass.class);

파일 시스템이나 클래스 경로에 있는 XML 설정 파일을 로딩하여 구동하는 컨테이너입니다.

 

 

반응형

댓글


오픈 채팅