junior
Как работает автоконфигурация в Spring Boot?
Автоконфигурация (Auto-configuration) – механизм, при котором Spring Boot автоматически настраивает бины на основании библиотек в classpath и заданных свойств.
Как это работает
@EnableAutoConfiguration(входит в@SpringBootApplication) активирует процесс- Spring Boot читает
META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.importsдля обнаружения классов автоконфигурации - Каждый класс содержит условия (
@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и получить ошибку запуска.