Ответ
BeanFactory — это корневой интерфейс IoC-контейнера Spring. Он отвечает за управление жизненным циклом бинов: их создание, конфигурацию, сборку зависимостей (Dependency Injection) и предоставление готовых экземпляров.
Основные характеристики BeanFactory:
- Ленивая инициализация: Бин создается только при первом запросе (
getBean()). - Базовая функциональность: Предоставляет фундаментальные возможности DI.
- Программный доступ: Контейнер нужно создавать и настраивать вручную.
Пример использования XmlBeanFactory (устаревший, для демонстрации концепции):
// Конфигурация в beans.xml
Resource resource = new ClassPathResource("beans.xml");
BeanFactory factory = new XmlBeanFactory(resource);
MyService service = (MyService) factory.getBean("myService");
service.execute();
BeanFactory vs ApplicationContext:
ApplicationContext является более продвинутым наследником BeanFactory и рекомендуется к использованию. Он добавляет:
- Автоматическую регистрацию
BeanPostProcessorиBeanFactoryPostProcessor. - Удобную интеграцию с аннотациями (
@Autowired,@ComponentScan). - Поддержку событий (ApplicationEvent), интернационализации (i18n), AOP.
- Немедленную (eager) инициализацию синглтонов по умолчанию.