이 글은 강의 : 김영한님의 - "스프링 핵심원리 - 기본편"을 듣고 정리한 내용입니다. 😁😁
이번에는 BeanFactory와 ApplicationContext 그리고 다양한 설정 형식 지원(자바 코드, XML)에 대해 알아볼 것이다.
BeanFactory는 스프링 컨테이너의 최상위 인터페이스이다.
BeanFactory 기능을 모두 상속받아 제공한다.
- 메시지소스를 활용한 국제화 기능(MessageSource)
- 환경변수(EnvironmentCapable)
- 로컬 환경(내 PC), 개발(테스트) 환경, 운영 환경 등을 구분해서 처리
ex) 환경에 따라 어떤 데이터베이스에 연결해야할지...
- 애플리케이션 이벤트(ApplicationEventPublisher)
- 이벤트를 발행하고 구독하는 모델을 편리하게 지원
- 편리한 리소스 조회(ResourceLoader)
- 파일, 클래스패스, 외부 등에서 리소스를 편리하게 조회
😏 결국!
ApplicationContext는 BeanFactory의 기능을 상속받는다.
ApplicationContext는 빈 관리기능 + 편리한 부가 기능을 제공한다.
BeanFactory를 직접 사용할 일은 거의 없다. 부가기능이 포함됨 ApplicationContext를 사용한다.
BeanFactory, ApplicationContext 모두 스프링 컨테이너다.
스프링 컨테이너는 다양한 형식의 설정 정보를 받아들일 수 있게 유연하게 설계되었다.
지금까지 해왔던 방식으로 주로 이 방식을 사용한다!
AnnotationConfigApplicationContext 클래스를 사용하면서 자바 코드로된 설정 정보를 넘기면 된다.
new AnnotationConfigApplicationContext(AppConfig.class);
최근에는 스프링 부트 사용으로 XML 기반의 설정은 잘 사용하지 않는다.
아직 많은 레거시 프로젝트들이 XML로 되어있고 XML을 사용하면 컴파일 없이 빈 설정 정보를 변경할 수 있는 장점도 있으므로 한번쯤 배워두는 것도 좋다.
GenericXmlApplicationContext를 사용하면서 xml 설정 파일을 넘기면 된다.
(XML 잘 사용안해서 그냥 이해 정도...하고 넘어가도 좋다)