Auto-configuration
Настройка на основе того, что уже есть в проекте
Spring Boot старается автоматически создать типичную инфраструктуру, если видит, что она нужна приложению. Решение принимается по условиям: какие классы есть в classpath, какие свойства заданы и какие beans уже зарегистрированы пользователем.
Например, если в проекте присутствуют библиотеки для определённой технологии, Boot может подготовить связанные с ней beans. Если разработчик создаст собственный bean того же назначения, автоматическая конфигурация во многих случаях отступит и оставит управление пользовательской конфигурации.
Автоматическая конфигурация не означает скрытую магию
За auto-configuration стоят обычные конфигурационные классы Spring с условиями. Упрощённо их идею можно представить так:
@Configuration
@ConditionalOnClass(MailSender.class)
class MailAutoConfiguration {
@Bean
@ConditionalOnMissingBean
MailService mailService() {
return new MailService();
}
}
Такая конфигурация срабатывает только при выполнении условий.
@ConditionalOnClass проверяет наличие класса,
а @ConditionalOnMissingBean позволяет не создавать bean,
если подходящий объект уже определён приложением.