Какой ключевой механизм автоматической конфигурации предоставляет Spring Boot?

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

Ответ

Основной механизм — автоконфигурация (Auto-configuration), активируемая аннотацией @EnableAutoConfiguration (часть @SpringBootApplication).

Как это работает:

  1. Spring Boot сканирует classpath на наличие определенных библиотек (например, spring-boot-starter-data-jpa, spring-boot-starter-web).
  2. На основе условий (@Conditional аннотации) он автоматически создает и настраивает стандартные бины.

Пример: Если в pom.xml добавлен spring-boot-starter-data-jpa и драйвер БД (например, H2), Spring Boot автоматически создаст бины:

  • DataSource
  • EntityManagerFactory
  • TransactionManager

Ключевые компоненты механизма:

  • Стартеры (Starters): Мета-зависимости (spring-boot-starter-*), которые подтягивают согласованный набор библиотек.
  • @Conditional аннотации: Управляют созданием бинов.
    • @ConditionalOnClass – бин создается, если класс присутствует в classpath.
    • @ConditionalOnMissingBean – бин создается, только если его еще нет в контексте.
  • Файлы конфигурации: META-INF/spring.factories (в Spring Boot 2.x) или META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports (в Spring Boot 3.x), где перечислены классы автоконфигурации.

Практический пример:

@SpringBootApplication // Включает @EnableAutoConfiguration
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

Благодаря этому механизму разработчик получает готовую к работе конфигурацию, которую можно точечно переопределять, объявляя собственные бины.