Gymterview
junior

Как работает автоконфигурация в Spring Boot?

Автоконфигурация (Auto-configuration) – механизм, при котором Spring Boot автоматически настраивает бины на основании библиотек в classpath и заданных свойств.

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

  1. @EnableAutoConfiguration (входит в @SpringBootApplication) активирует процесс
  2. Spring Boot читает META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports для обнаружения классов автоконфигурации
  3. Каждый класс содержит условия (@Conditional), при которых он применяется

Основные условия (@Conditional)

Аннотация Условие
@ConditionalOnClass Класс есть в classpath
@ConditionalOnMissingClass Класса нет в classpath
@ConditionalOnBean Бин уже зарегистрирован
@ConditionalOnMissingBean Бин ещё не зарегистрирован
@ConditionalOnProperty Свойство имеет определённое значение
@ConditionalOnWebApplication Приложение является веб-приложением

Принцип приоритета

Пользовательские бины всегда имеют приоритет над автоконфигурацией. Если вы определили свой DataSource, автосконфигурированный не будет создан (благодаря @ConditionalOnMissingBean).

Отключение автоконфигурации

Пример
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class MyApplication { }

Отладка

Пример
# Показывает, какие автоконфигурации применены, а какие нет
debug=true

На собеседовании: ключевое – понимание принципа @ConditionalOnMissingBean и приоритета пользовательских бинов. Частая ошибка – добавить зависимость (например, spring-boot-starter-data-jpa) без настройки spring.datasource.url и получить ошибку запуска.