스프링 프레임워크의 핵심 기능 중 하나는 의존성 주입(Dependency Injection, DI)을 통한 객체 관리입니다. 이러한 기능을 제공하는 것이 바로 스프링 컨테이너입니다. 오늘은 스프링 컨테이너의 두 가지 주요 구현체인 BeanFactory와 ApplicationContext에 대해 알아보겠습니다.
BeanFactory는 스프링 컨테이너의 최상위 인터페이스입니다. 이는 스프링의 IoC(Inversion of Control) 컨테이너의 기본적인 기능을 정의합니다.
Resource resource = new ClassPathResource("applicationContext.xml");
BeanFactory factory = new XmlBeanFactory(resource);
MyBean bean = (MyBean) factory.getBean("myBean");
ApplicationContext는 BeanFactory를 확장한 인터페이스입니다. BeanFactory의 모든 기능을 포함하면서도 더 많은 엔터프라이즈 특화 기능을 제공합니다.
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
MyBean bean = context.getBean("myBean", MyBean.class);
일반적으로 ApplicationContext를 사용하는 것이 권장됩니다. ApplicationContext는 더 많은 기능을 제공하며, 대부분의 애플리케이션에서 그 장점이 단점을 상쇄합니다. 그러나 특수한 경우(예: 제한된 리소스 환경)에는 BeanFactory를 고려해볼 수 있습니다.