0Pricing
Java Academy · Урок

Автонастройка и стартеры 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 — локальная установка не требуется.

Все уроки этого курса

  1. Автонастройка и стартеры Spring Boot
  2. Свойства приложения и профили
  3. Связывание компонентов: @Component, @Service, @Repository
  4. Внедрение через конструктор и циклические зависимости
← Назад к Java Academy