Что такое BeanFactory в Spring Framework?

«Что такое BeanFactory в Spring Framework?» — вопрос из категории Spring, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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) инициализацию синглтонов по умолчанию.