BeanFactory
스프링 컨테이너의 최상위 인터페이스입니다.
스프링 빈을 관리 및 조회하는 역할을 수행합니다.
ApplicationContext는 BeanFactory를 상속받은 관계입니다.
ApplicationContext
BeanFactory의 기능을 모두 상속 받아서 제공합니다.
빈을 관리하는 기능과 더불어 편리한 부가기능을 제공합니다.
BeanFactory와 ApplicationContext의 차이점은?
로딩방식
BeanFactory는 빈을 필요한 시점에 로딩하는 LazyLoading 방식이지만 ApplicationContext는 처음부터
모든 빈을 로딩하는 EagerLoading방식을 취합니다. 따라서 BeanFactory가 ApplicationContext 보다 조금 가벼운
특성을 지닙니다.
앤터프라이즈 어플리케이션 기능
ApplicationContext는 Beanfactory를 조금 더 프레임워크 관점에서 발전되었습니다. 메세징 기능, 이벤트 기능이, 어노테이션 기반의 의존성 주입이 대표적인 예시 입니다. 이것과 별개로, ApplicationContext는 모든 타입의 빈 형태를 제공하지만 BeanFactory는 싱글톤과 프로토타입 빈 2가지 형태의 빈 만을 제공합니다.
빈 생성의 전 후 처리를 담당하는 BeanFactoryPostProcessor와 BeanPostProcessor의 자동 등록 여부
BeanFactory는 빈 생성 전 후 처리를 담당하는 BeanFactoryPostProcessor와 BeanPostProcessor을 별도로
등록해야하지만 ApplicationContext는 이들을 자동으로 등록해줍니다.
결론적으로 BeanFactory는 ApplicationContext보다 부가적인 기능이 적고 LazyLoading 방식으로 빈을 로딩하여
가벼운 특성이 있어서 메모리 소비가 치명적일 경우 써도 됩니다. 하지만 그 외의 경우에는 일반적으로
ApplicationContext를 쓰는게 권장됩니다.
참고자료
https://www.baeldung.com/spring-beanfactory-vs-applicationcontext
'Spring' 카테고리의 다른 글
AOP에 대하여 (2) | 2023.04.19 |
---|---|
Bean과 Component 뜯어보기 (0) | 2023.03.22 |
스프링 빈의 쓰레드 안정성에 대하여 (0) | 2023.02.21 |
스프링 시큐리티 아키텍처에 대하여 (0) | 2023.01.29 |
@Transaction에 대하여 (0) | 2023.01.06 |