본문 바로가기
Spring

[SPRING] 컨테이너 기본 개념

by 소금_msg 2021. 11. 4.

스프링 프레임워크를 이해하는데 가장 중요한 개념이 바로 컨테이너이다.
컨테이너는 특정 객체의 생성과 관리를 담당하여 객체 운용에 필요한 다양한 기능을 제공한다.
컨테이너는 일반적으로 서버 안에 포함되어 있어 배포 및 구동된다.


IoC(Inversion of Control) 컨테이너

IoC는  제어의 역전이라는 뜻으로
쉽게말해 개발자들이 자바를 통해 생성하고 호출했던 작업들을 xml파일을 통해 스스로 생성하고 호출하도록 만드는 컨테이너다.

각 계층이나 서비스들 간의 의존성을 맞춰두는 스프링에서 가장 핵심되는 기능이라고 할 수있다.


[스프링 컨테이너의 종류]

스프링에서는 BeanFactory와 이를 상속한 ApplicationContext 두 가지 유형의 컨테이너를 제공한다.
먼저 BeanFactory는 스프링 설정 파일에 등록된 <bean>객체를 생성하고 관리하는 가장 기본적인 컨테이너 기능만 제공한다.

(여기서 bean은 인스턴스화된 객체를 의미한다.
그런 bean 을 만드는 공장 BeanFactory는
원래 Test test = new Test 이렇게 생성해서 썼던 객체를 알아서 생성해주는 기능을 가진 클래스이다)

그리고 컨테이너가
구동될 때 <bean>객체를 생성하는 것이 아니라, 크라이언트의 요청에 의해서만 <bean>객체가 생성되는 지연 로딩 방식을 사용한다.
(쓰일 타이밍에 맞춰서 객체를 생성시킨다는 뜻)


ApplicationContext는 BeanFactory가 제공하는 <bean>객체 관리 기능 외에도 트랜잭션 관리나 메시지 기반의
다국어 처리 등 다양한 기능을 지원한다. 또한 컨테이너가 구동되는 시점에 <bean>등록된 클래스들을
객체 생성하는즉시 로딩식으로 동작한다. 그리고 웹 애플리케이션 개발도 지원하므로 대부분 스프링 프로젝트는
AppliccationContext 유형의 컨테이너를 이용한다.




[자주쓰는 컨테이너 알아두자]

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

XmlWebApplicationContext 웹 기반의 스프링 애플리케이션을 개발할 때 사용하는 컨테이너.