영호

[Spring] BeanFactory, ApplicationContext 본문

Spring

[Spring] BeanFactory, ApplicationContext

0h0 2022. 12. 23. 16:07

개요

Spring은 객체지향의 장점을 살리면서 개발할 수 있는 프레임워크입니다. 객체지향 프로그래밍은 여러 객체들이 서로 의존하면서 주어진 기능을 수행합니다.

이를 위해 Spring에선 BeanFactory, ApplicationContext를 제공해 객체들을 관리해 줍니다.

 

BeanFactory

스프링 공식문서를 보면 "The root interface for accessing a Spring bean container." 즉, 스프링 빈에 접근하기 위한 기능들을 제공해 줍니다.

  • 스프링 컨테이너의 최상위 인터페이스입니다.
  • 스프링 빈을 조회, 관리하는 역할을 담당합니다.

스프링 빈 조회 시 사용되는 getBean() 메서드를 제공합니다.

 

그렇다면 ApplicationContext는 스프링 빈에 대해 어떤 기능을 제공하는지 알아보겠습니다.

ApplicationContext

ApplicationContext는 BeanFactory를 상속한 인터페이스입니다. BeanFactory에 더해 추가적인 기능을 제공해 줍니다.

  • MessageSource인터페이스를 상속받아 국제화 기능을 제공합니다.
    • 이를 활용해 특정 message가 어떤 언어로 표현할지 쉽게 설정할 수 있습니다.
  • ListableBeanFactory를 상속받아 빈 관리에 대한 추가적인 기능을 제공합니다.
    • getBeanDefinitionCount()
    • getBeanDefinitionNames()
    • 등등...
  • ResourceLoader인터페이스를 상속받아 쉽게 파일을 읽어올 수 있습니다.
  • ApplicationEventPublisher인터페이스를 상속받아 이벤트 프로그래밍 기능을 제공합니다.

정리

이처럼 ApplicationContext는 BeanFactory를 상속받아 추가적인 기능을 제공하기 때문에, 보통 스프링 컨테이너는 ApplicationContext를 의미한다고 합니다.

Comments