[Spring] 4-3. BeanFactory와 ApplicationContext

송광호·2023년 12월 20일

[Spring]

목록 보기
19/41
post-thumbnail

Spring 시리즈는 혼자 공부하며 기록으로 남기고, 만약 잘못 학습 한 지식이 있다면 공유하며 피드백을 받고자 작성합니다.
스프링에 대해 깊게 공부해보고자 인프런의 김영한 강사님께서 강의를 진행하시는 (스프링 핵심 원리 - 기본편) 강의를 수강하며 정리하는 글입니다.
혹여나 글을 읽으시며 잘못 설명된 부분이 있다면 지적 부탁드리겠습니다.


BeanFactory와 ApplicationContext

먼저 사진으로 구조를 확인해보면 다음과 같다.

BeanFactory

  • 스프링 컨테이너의 최상위 인터페이스이다.
  • 스프링 빈을 관리하고 조회하는 기능을 담당하고 있다.
  • 그동안 자주 사용했던 getBean() 메서드 또한 BeanFactory가 제공하는 기능 중 일부이다.

ApplicationContext

  • BeanFactory의 모든 기능을 상속받아서 제공한다.
  • 빈을 관리하고 검색하는 기능은 BeanFactory가 제공해주는데.. 그러면 ApplicationContext와는 무슨차이지?
  • 애플리케이션을 개발할 때는 관리 및 조회를 제외하고도 수많은 부가기능을 필요로한다.

ApplicationContext가 제공하는 부가기능


메세지소스를 활용한 국제화 기능(MessageSource)

  • 제목만 보면 무슨 기능인가 싶겠지만, 예를 들어 한국에서 접속하면 한국어로, 영어권에서 들어오면 영어로 출력하는 기능이다.

환경 변수

  • 로컬, 개발, 운영 등을 구분해서 처리한다.
  • 실무에서는 내 PC환경인 로컬서버와, 개발된 기능들을 테스트하거나 개발관련 작업을 하는 개발서버, 실제로 서비스가 제공되는 운영서버 등이 있다.

애플리케이션 이벤트(ApplicationEventPublisher)

  • 이벤트를 발생하고 구독하는 모델을 편리하게 지원한다.

편리한 리소스 조회(ResourceLoader)

  • 파일, 클래스Path, 외부 등에서 리로스를 편리하게 조회하는 기능을 제공해준다.

정리

  • BeanFactory를 직접 사용할 일은 거의 없고, 부가기능이 포함된 ApplicationContext를 사용한다.
  • 앞 게시글에서도 언급했듯이 BeanFactoryApplicationContext를 모두 스프링 컨테이너라고 한다.

0개의 댓글