본문 바로가기
IT/spring

스프링 컨테이너 종류

by 뉴코딩맨 2023. 6. 13.
스프링 프레임워크는 다양한 종류의 컨테이너를 제공하여 애플리케이션의 객체를 관리합니다. 각각의 컨테이너는 특정한 목적과 사용 시나리오에 맞게 선택하여 사용할 수 있습니다. 스프링의 주요 컨테이너 종류를 소개하고, 각각의 특징과 예시를 살펴보겠습니다.

 

 

1. BeanFactory 컨테이너

BeanFactory는 가장 기본적인 스프링의 컨테이너입니다. XML 파일 또는 어노테이션을 사용하여 Bean을 등록하고 관리합니다. Bean의 지연 로딩과 프로퍼티 설정 등의 기능을 제공하며, 필요한 시점에 Bean을 로드하여 사용할 수 있습니다.
 
<bean id="myBean" class="com.example.MyBean" />

 

2. ApplicationContext 컨테이너

ApplicationContext는 BeanFactory 컨테이너의 확장된 버전으로, 다양한 기능과 유틸리티를 제공합니다. BeanFactory와 달리 ApplicationContext는 애플리케이션의 초기화 시점에 모든 Bean을 로드하여 미리 인스턴스화합니다. 또한, 국제화(i18n), 이벤트 처리, 메시지 리소스 등의 기능을 제공합니다.

 

ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
MyBean myBean = context.getBean("myBean", MyBean.class);

 

 

3. AnnotationConfigApplicationContext 컨테이너

AnnotationConfigApplicationContext는 Java Config를 사용하여 Bean을 등록하는 컨테이너입니다. XML 설정 파일 대신 Java 클래스에서 @Configuration 어노테이션을 사용하여 Bean을 등록하고, 컨테이너를 초기화합니다.
 
@Configuration
public class AppConfig {
    @Bean
    public MyBean myBean() {
    	return new MyBean();
    }
}

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
MyBean myBean = context.getBean(MyBean.class);

 

4. WebApplicationContext 컨테이너

WebApplicationContext는 웹 애플리케이션에서 사용되는 컨테이너로, 웹 환경에서 필요한 기능을 제공합니다. ServletContext를 상속받는 ApplicationContext로, 서블릿 컨텍스트와 연동하여 웹 애플리케이션의 설정과 관련된 Bean을 관리합니다.
 
@Configuration
public class WebAppConfig {
    @Bean
    public MyBean myBean() {
    	return new MyBean();
    }
}

public class MyServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) {
        WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
        MyBean myBean = context.getBean(MyBean.class);
    	// ...
    }
}
 
 

5. 기타 컨테이너

스프링은 위에서 소개한 컨테이너 이외에도 다양한 컨테이너를 제공합니다. 예를 들어, PortletApplicationContext는 포틀릿 환경에서 사용되는 컨테이너이며, TestContext는 테스트 시나리오에서 사용되는 컨테이너입니다. 각각의 컨테이너는 특정한 사용 환경에 최적화된 기능을 제공하여 스프링 애플리케이션의 개발과 테스트를 보다 효율적으로 할 수 있도록 도와줍니다.
 

결론

스프링은 다양한 종류의 컨테이너를 제공하여 개발자가 편리하게 애플리케이션의 객체를 등록하고 관리할 수 있도록 지원합니다. 각각의 컨테이너는 특정한 목적과 사용 시나리오에 맞게 선택하여 사용할 수 있으며, 필요에 따라 커스터마이징하여 사용할 수도 있습니다. 이를 통해 스프링 프레임워크는 유연하고 확장 가능한 애플리케이션 개발을 지원합니다.
 

댓글