인프런 김영한 선생님 스프링 핵심 원리 강의를 보고 정리한 내용입니다.
BeanFactory
- 스프링 컨테이너의 최상위 인터페이스
- 스프링 빈을 관리하고 조회하는 역할을 담당
- getBean()을 제공
ApplicationContext
- BeanFactory의 기능을 모두 상속받아서 제공
- 다른 인터페이스를 상속받아 구현하여 부가 기능도 함께 제공
차이점
1. 부가 기능
ApplicationContext는 BeanFactory가 갖고 있지 않은 다른 인터페이스를 구현한다.
- 메시지 소스를 활용한 국제화 기능 : 실행되는 나라에 맞춰 언어 변경
- 환경 변수 : 로컬, 개발, 운영 등을 구분해서 처리
- 애플리케이션 이벤트 : 이벤트 발행 및 구독 모델 지원
- 편리한 리소스 조회 : 파일, 클래스패스, 외부 등에서 리소스 조회
2. 로딩 시간
BeanFactory
- getBean() 메서드가 호출될 때까지 빈의 생성을 미룬다.
- 지연 로딩(Lazy-Loading)을 한다.
ApplicationContext
- 여러 개의 객체를 만들 수 있게 설정 가능하며, 빈이 필요할 때 즉시 사용될 수 있도록 한다.
- 즉시 로딩(Eager-Loading)을 한다.
정리
- ApplicationContext는 BeanFactory의 기능을 상속받는다.
- ApplicationContext는 빈 관리 기능 + 편리한 부가 기능을 제공한다.
- BeanFactory는 지연 로딩을 하고, ApplicationContext는 즉시 로딩을 한다.
- BeanFactory나 ApplicationContext를 스프링 컨테이너라고 한다.
'Dev > Spring' 카테고리의 다른 글
[Spring] Entity 설계시 주의할 점 (0) | 2023.09.19 |
---|---|
[H2] zsh: permission denied: ./h2.sh (0) | 2023.09.18 |
[Spring] 생성자 주입을 선택해야 하는 이유 (0) | 2023.09.14 |
[Spring] @ComponentScan (0) | 2023.09.13 |
[Spring] 싱글톤 패턴과 싱글톤 컨테이너 (0) | 2023.09.12 |