Какова роль модуля Spring Core в Spring Framework?

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

Ответ

Spring Core — это фундаментальный модуль, реализующий принципы Inversion of Control (IoC) и Dependency Injection (DI), которые составляют основу всего фреймворка.

Основные функции:

  • IoC-контейнер: Создаёт, конфигурирует и управляет жизненным циклом объектов (бинов).
  • Внедрение зависимостей (DI): Автоматически связывает компоненты, уменьшая связанность кода.
  • Унифицированная конфигурация: Поддерживает XML, аннотации (@Component, @Autowired, @Configuration) и Java-based конфигурацию.
  • Дополнительные возможности: Включает базовую поддержку AOP, работу с событиями, валидацию данных и язык выражений SpEL (Spring Expression Language).

Пример конфигурации через аннотации:

@Component
public class OrderService {
    @Autowired // DI: контейнер внедрит зависимость
    private PaymentProcessor paymentProcessor;

    public void processOrder(Order order) {
        paymentProcessor.charge(order);
    }
}

Почему это важно: Spring Core отделяет конфигурацию и сборку объектов от бизнес-логики, что делает приложение более модульным, тестируемым и гибким. Все остальные модули Spring (Boot, Data, Security) строятся на этой основе.