🌳 스프링 컨테이너 종류
Spring 컨테이너 | 설명 | |
BeanFactory | 스프링 설정 파일에 등록된 <bean> 객체를 생성하고 관리하는 가장 기본적인 컨테이너 기능만 제공. 컨테이너가 구동될 때 <bean> 객체를 생성하는 것이 아니라, 클라이언트의 요청에 의해서만 <bean> 객체가 생성되는 지연 로딩 방식을 사용한다. 따라서 일반적인 스프링 프로젝트 BeanFactory를 사용할 일은 전혀 없다. |
|
ApplicationContext | BeanFactory가 제공하는 <bean>객체 관리 기능 외에도 트랜잭션 관리나 메시지 기반의 다국어 처리 등 다양한 기능을 지원한다. 컨테이너가 구동되는 시점에 <bean> 등록된 클래스들을 객체 생성하는 즉시 로딩식으로 동작한다. 웹 애플리케이션 개발도 지원하므로 대부분 스프링 프로젝트는 ApplicationContext 유형의 컨테이너를 이용한다. ApplicationContext의 구현 클래스는 매우 다양하다. 실제로 가장 많이 사용하는 두 개의 클래스는? |
ApplicationContext 구현 클래스 | |
GenericXmlApplicationContext | 파일 시스템이나 클래스 경로에 XML 설정 파일을 로딩하여 구동하는 컨테이너이다. |
XmlWebApplicationContext | 웹 기반의 스프링 애플리케이션을 개발할 때 사용하는 컨테이너이다. |
🌳 스프링 XML 설정
루트 엘리먼트 | 설명 | |
<beans> |
스프링 컨테이너는 <bean> 저장소에 해당하는 XML 설정 파일을 참조하여 <bean>의 생명주기를 관리와 서비스를 제공한다. <beans>를 루트 엘리먼트로 사용해야 한다. <beans> 엘리먼트 시작 태그에 네임스페이스를 비롯한 XML 스키마 관련 정보가 설정된다. beans 네임스페이스는 기본 네임스페이스로 선언, spring-beans.xsd 스키마 문서가 schemaLocation 등록되어 있다. |
|
엘리먼트 | 설명 | |
<bean> | 스프링 설정 파일에 등록하려면 <bean> 엘리먼트를 사용한다. 이때 id와 class 속성을 사용하는데, id 속성은 생략 가능 class 속성은 필수이다. class 속성에 정확한 패키지 경로와 클래스 이름을 지정해야 한다. |
|
<description> | ||
<alias> | ||
<import> | 스프링 설정 파일 하나에 우리가 만든 모든 클래스를 <bean>으로 등록하고 관리하면 스프링 설정 파일이 너무 길어지고 관리도 어렵다. 따라서 기능별 여러 XML 파일로 나누어 설정하는 것이 더 효율적이고, 이렇게 분리하여 작성한 설정 파일들을 하나로 통합할 때 <import> 엘리먼트를 사용한다. |
