Spring IoC Container
BeanFactory는 Bean을 생성하고 라이프 사이클을 관리하는 게 주 업무이다.
Application Context는 Bean Factory를 상속하며 추가로 Application 전반에 걸쳐 모든 구성요소의 제어 작업을 담당하는 IoC 엔진이라는 의미가 좀 더 부각된다고 보면 된다.
그리고 또 하나의 차이가
Bean Factory는 Bean을 호출할 때 생성하는 Lazy Loading
Application Context는 처음부터 다 생성하는 Eager Loading이다.
실제로 실험해봐도 바로 생성된 것을 볼 수 있다.
그런데 Lazy Loading이 더 좋은 것 아닌가? 필요한 Bean만 생성해서 쓰니까 말이다. 게다가 싱글톤이니까 처음에만 생성하면 성능상 문제도 없다.
Application Context가 Bean Factory보다 늦게 나온 것 같고, 뭔가 의미가 있을 것 같은데 좀 더 찾아봐야겠다.
나의 추측은 요청이 왔을 때 생성하면 시간이 오래 걸리고, 최근에는 빠른 반응성이 큰 이슈니까 차라리 처음에 다 만들어버리는 게 아닐까?