🌳 스프링 컨테이너 종류

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> 엘리먼트를 사용한다.