Ответ
Основной механизм — автоконфигурация (Auto-configuration), активируемая аннотацией @EnableAutoConfiguration (часть @SpringBootApplication).
Как это работает:
- Spring Boot сканирует classpath на наличие определенных библиотек (например,
spring-boot-starter-data-jpa,spring-boot-starter-web). - На основе условий (
@Conditionalаннотации) он автоматически создает и настраивает стандартные бины.
Пример: Если в pom.xml добавлен spring-boot-starter-data-jpa и драйвер БД (например, H2), Spring Boot автоматически создаст бины:
DataSourceEntityManagerFactoryTransactionManager
Ключевые компоненты механизма:
- Стартеры (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);
}
}
Благодаря этому механизму разработчик получает готовую к работе конфигурацию, которую можно точечно переопределять, объявляя собственные бины.