Автонастройка и стартеры Spring Boot
Узнайте, как Spring Boot автоматически настраивает компоненты на основе зависимостей в пути классов и условных аннотаций.
«Автонастройка и стартеры Spring Boot» — бесплатный урок Java Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Java Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Java Academy содержит 4 уроков всего.
Что такое автоконфигурация Spring Boot
Автоконфигурация автоматически настраивает бины Spring на основе содержимого пути классов и окружения. Она устраняет необходимость вручную настраивать @Bean для распространённых интеграций.
Аннотация @SpringBootApplication
@SpringBootApplication объединяет @Configuration, @EnableAutoConfiguration и @ComponentScan. Она активирует автоконфигурацию и сканирование компонентов.
@SpringBootApplication
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}Как работает автоконфигурация
Spring Boot выполняет поиск в META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports (Spring Boot 3), где содержится перечень классов автоконфигурации. Каждый класс применяется при выполнении условий.
// Spring Boot 3 imports file:
// org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
// org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration@ConditionalOnClass и @ConditionalOnMissingBean
Классы автоконфигурации используют аннотации @Conditional, чтобы применяться только при выполнении определённых условий — например, если класс находится в пути классов или бин ещё не определён.
@AutoConfiguration
@ConditionalOnClass(DataSource.class)
@ConditionalOnMissingBean(DataSource.class)
public class DataSourceAutoConfiguration {
@Bean
public DataSource dataSource(DataSourceProperties props) {
return DataSourceBuilder.create().build();
}
}Стартеры Spring Boot
Стартер — это подобранный набор описаний зависимостей. Добавление spring-boot-starter-web в проект подключает Spring MVC, Tomcat, Jackson и соответствующие автоконфигурации — без ручного поиска зависимостей.
// build.gradle:
dependencies {
implementation "org.springframework.boot:spring-boot-starter-web"
implementation "org.springframework.boot:spring-boot-starter-data-jpa"
implementation "org.springframework.boot:spring-boot-starter-validation"
}Основные стартеры
Основные стартеры: starter-web (REST + Tomcat), starter-data-jpa (JPA + Hibernate), starter-security, starter-test (JUnit + Mockito), starter-actuator (состояние и метрики).
Переопределение автоконфигурации
Определите собственный @Bean того же типа, чтобы он имел приоритет над автоматически настроенными бинами. @ConditionalOnMissingBean гарантирует, что автоматически настроенный бин будет создан только при отсутствии вашего.
// Override auto-configured ObjectMapper:
@Configuration
public class JacksonConfig {
@Bean
public ObjectMapper objectMapper() {
return new ObjectMapper()
.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
.registerModule(new JavaTimeModule());
}
}Исключение автоконфигурации
Исключайте конкретные классы автоконфигурации, которые вам не нужны, — это полезно, когда стартер добавляет компонент, который вы хотите настроить вручную.
@SpringBootApplication(exclude = {
DataSourceAutoConfiguration.class,
SecurityAutoConfiguration.class
})
public class MyApp { ... }Создание собственного стартера
Создайте модуль стартера с классом автоконфигурации и зарегистрируйте его в META-INF/spring/....AutoConfiguration.imports. Другие проекты, подключившие ваш стартер, автоматически получат созданные вами бины.
// my-starter/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports:
// com.example.MyLibraryAutoConfigurationОтладка автоконфигурации
Запустите приложение с флагом --debug или задайте logging.level.org.springframework.boot.autoconfigure=DEBUG, чтобы увидеть «CONDITIONS EVALUATION REPORT», где перечислены применённые или исключённые автоконфигурации и причины этого.
java -jar myapp.jar --debug
# Or in application.properties:
# logging.level.org.springframework.boot.autoconfigure=DEBUGКонечная точка Actuator /conditions
Подключите spring-boot-starter-actuator и опубликуйте конечную точку /actuator/conditions, чтобы во время работы приложения просматривать отчёт об оценке автоконфигурации без перезапуска.
# application.properties:
management.endpoints.web.exposure.include=conditions
# Then:
curl http://localhost:8080/actuator/conditionsБыстрая проверка
Какая аннотация приводит к созданию бина только в том случае, если бин такого типа ещё не определён?
Итоги
Автоконфигурация использует условные аннотации для настройки бинов на основе пути классов и уже существующих бинов. Стартеры объединяют зависимости и автоконфигурацию. Переопределяйте настройки собственными бинами. Исключайте ненужные конфигурации. Выполняйте отладку с помощью --debug.
Часто задаваемые вопросы
Урок «Автонастройка и стартеры Spring Boot» бесплатный?
Да — полный текст урока «Автонастройка и стартеры Spring Boot» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Java Academy, подпишись на CoddyKit PRO. Курс Java Academy содержит 4 уроков всего.
Чему я научусь в уроке «Автонастройка и стартеры Spring Boot»?
Узнайте, как Spring Boot автоматически настраивает компоненты на основе зависимостей в пути классов и условных аннотаций. Ты практикуешь Java Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Java Academy?
Предыдущий опыт не требуется. Java Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Автонастройка и стартеры Spring Boot»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Java Academy?
Да. Каждый урок Java Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Автонастройка и стартеры Spring Boot
- Свойства приложения и профили
- Связывание компонентов: @Component, @Service, @Repository
- Внедрение через конструктор и циклические зависимости