스프링 프레임워크를 이해하는데 가장 중요한 개념이 바로 컨테이너이다.
컨테이너는 특정 객체의 생성과 관리를 담당하여 객체 운용에 필요한 다양한 기능을 제공한다.
컨테이너는 일반적으로 서버 안에 포함되어 있어 배포 및 구동된다.
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 웹 기반의 스프링 애플리케이션을 개발할 때 사용하는 컨테이너.
'Spring' 카테고리의 다른 글
[Spring]SqlSessionFactory 연동순서 (0) | 2021.11.13 |
---|---|
[Spring]웹사이트 만드는 예제에서 interface 궁금한점 (0) | 2021.11.12 |
web.xml에서 welcome-file-list 란? (0) | 2021.11.10 |
[Spring] Mybatis 예제 순서 (0) | 2021.11.10 |
[SPRING]DI 의존성 주입 (0) | 2021.11.09 |