spring

[Spring] ApplicationContext

hseoky 2025. 3. 23. 13:08
728x90

ApplicationContext


ApplicationContext는 스프링 컨테이너의 역할을 수행하는 인터페이스로, 애플리케이션의 빈(Bean) 객체들을 생성, 관리, 제어하는 역할과 애플리케이션 개발과 관련된 부가기능을 제공한다.

 

ApplicationContext 인터페이스 구조

public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory, MessageSource, ApplicationEventPublisher, ResourcePatternResolver {
  @Nullable
  String getId();

  String getApplicationName();

  String getDisplayName();

  long getStartupDate();

  @Nullable
  ApplicationContext getParent();

  AutowireCapableBeanFactory getAutowireCapableBeanFactory() throws IllegalStateException;
}

ApplicationContext는 애플리케이션 개발과 관련된 다양한 기능을 제공하기위한 인터페이스를 상속받는다.

 

 

[상속받는 인터페이스 목록]


  • EnvironmentCapable
    • getEnvironment 메서드를 통해 애플리케이션 환경(Environment)에 접근하는 기능을 제공한다.
  • ListableBeanFactory
    • 컨테이너에 등록된 모든 빈의 목록을 가져오는 기능을 제공한다.
  • HierarchicalBeanFactory
    • 빈 팩토리(Bean Factory)의 계층 구조를 정의하는 인터페이스로, 여러 개의 빈 팩토리 간의 계층구조를 설정하여 빈을 관리할 수 있도록 한다.
    • 별다른 설정이 없다면 ApplicationContext(또는 Bean Factory)는 하나만 생성된다. 하지만 대규모 애플리케이션에서 각 모듈을 독립적인 컨텍스트로 분리하여 관리할 때, 계층 구조를 통해 여러 컨텍스트 간에 빈을 공유할 수 있게 한다.
  • MessageSource
    • 국제화 기능을 제공한다.
  • ApplicationEventPublisher
    • 애플리케이션 이벤트를 발행하는 기능을 제공한다.
  • ResourcePatternResolver
    • 리소스 패턴을 사용하여 리소스를 찾는 기능을 제공한다.

 

상속받는 인터페이스 중 ListableBeanFactory가 있는데, 해당 인터페이스는 내부적으로 BeanFactory 인터페이스를 상속받는다. 이 BeanFactory 인터페이스는 스프링 빈 컨테이너에 접근하기 위한 최상위 인터페이스로, 빈의 생성과 의존성 주입과 같은 핵심적인 컨테이너 기능만을 담당하며 애플리케이션 개발에 필요한 다양한 부가기능은 제공하지 않는다.


ApplicationContext는 이러한 BeanFactory를 간접적으로 상속받아 스프링 컨테이너의 역할을 수행하며 애플리케이션 개발과 관련된 부가기능을 위한 다양한 인터페이스를 상속받는 높은 수준의 인터페이스이다. ApplicationContext를 활용하면 스프링 컨테이너의 역할과 더불어 리소스 관리, 국제화, 이벤트 처리, AOP등과 같은 부가기능을 제공할 수 있다. 이러한 이유로 대부분 스프링 애플리케이션에서는 ApplicationContext를 사용하여 빈을 관리한다.

 

 

정리


  • ApplicationContext는 스프링 컨테이너의 역할을 수행하는 인터페이스로, 애플리케이션에서 사용할 빈(Bean) 객체들을 생성, 관리, 제어하는 역할을 한다.
  • 스프링에서 빈을 관리하는 최상위 인터페이스는 BeanFactory 이고, ApplicationContext는 이 BeanFactory를 상속받아 스프링 컨테이너의 역할을 하며 리소스 관리, 이벤트 처리 등과 같은 애플리케이션 운영과 관련된 부가적인 기능을 제공한다.
728x90