Какой компонент является центральным в Spring Framework?

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

Ответ

Центральным компонентом Spring является IoC (Inversion of Control) контейнер, также известный как Application Context. Он отвечает за создание, конфигурацию и управление жизненным циклом объектов (бинов), а также за внедрение их зависимостей (Dependency Injection).

Ключевые интерфейсы:

  • BeanFactory — базовая функциональность контейнера.
  • ApplicationContext — расширяет BeanFactory, добавляя интеграцию с AOP, международализацию, публикацию событий и многое другое. Это основной интерфейс, используемый в приложениях.

Пример создания контекста:

// Современный подход через аннотации (Java Config)
AnnotationConfigApplicationContext context =
    new AnnotationConfigApplicationContext(AppConfig.class);

MyService service = context.getBean(MyService.class);
service.execute();

Что делает контейнер:

  1. Инверсия управления: Контейнер управляет созданием бинов, а не разработчик через new.
  2. Внедрение зависимостей: Автоматически разрешает и внедряет зависимости между бинами (через конструктор, сеттеры или поля).
  3. Управление областью видимости (Scope): Поддерживает singleton, prototype, request, session и другие.
  4. Конфигурация: Позволяет настраивать бины через аннотации (@Component, @Autowired), Java-код или XML.

Без IoC-контейнера Spring теряет свою основную ценность — декларативный стиль разработки и слабую связанность компонентов.