Цель урока
Понять, зачем нужен Spring Boot, как он устроен изнутри, и поднять минимальное приложение, которое что-то отвечает по HTTP.
Теория · для собеса
1 Что такое Spring Boot ▸
Spring Boot — «обёртка» над Spring Framework, которая убирает рутину:
- не надо писать XML/конфиги руками
- стартеры — набор совместимых зависимостей «в одну строку»
- встроенный сервер (Tomcat/Jetty) — приложение запускается как обычный
java -jar app.jar - автоконфигурация — Spring сам подбирает настройки по тому, что нашёл в classpath
🧱 Аналогия: Spring Framework — это набор деталей Lego. Spring Boot — готовая коробка «собери машинку по инструкции за 5 минут». Детали те же, но инструкция и подбор уже сделаны за тебя.
2 @SpringBootApplication · три в одном ▸
Ставится на класс с main. Это три аннотации в одной:
класс может объявлять бины
Spring смотрит в classpath и подключает то, что нужно
сканирует текущий пакет и ниже, находит @Component, @Service, @Repository, @RestController
@SpringBootApplication?» — «это три аннотации в одной».3 Стартеры · spring-boot-starter-* ▸
Стартер — это пустой пакет с POM, который тянет связку совместимых библиотек.
Версии стартерам не указываешь — Spring Boot BOM (spring-boot-dependencies) сам подбирает совместимые.
4 REST и HTTP-методы ▸
REST — стиль API, где URL = ресурс, а HTTP-метод = действие над ним.
Идемпотентность: повторный вызов даёт тот же результат. DELETE /users/1 10 раз = пользователь удалён 1 раз. POST /users 10 раз = 10 разных пользователей.
Безопасность: метод не меняет состояние сервера. Только GET.
Практика: поднимаем TaskFlow
-
1Создай проект
Через start.spring.io или в IDEA (New → Project → Spring Initializr):
- BuildGradle · Kotlin DSL
- LanguageJava 21
- Spring Boot3.4.x
- DependenciesSpring Web
-
2Главный класс
Точка входа:
package com.taskflow; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class TaskFlowApplication { public static void main(String[] args) { SpringApplication.run(TaskFlowApplication.class, args); } } -
3REST-контроллер
package com.taskflow.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.time.Instant; import java.util.Map; @RestController public class HealthController { @GetMapping("/api/health") public Map<String, Object> health() { return Map.of( "status", "UP", "time", Instant.now().toString() ); } } -
4Запуск
В IDE — зелёная стрелка на
TaskFlowApplication.
Или в терминале:./gradlew bootRun -
5Проверка
curl http://localhost:8080/api/health # {"status":"UP","time":"2026-06-29T..."}Если видишь JSON — всё работает. 🎉
Зачем это на собесе
После урока ты должен уметь ответить на:
@SpringBootApplication?» — 3 в 1: @Configuration + @EnableAutoConfiguration + @ComponentScan.5 вопросов на углубление
0 / 5Выбери вопросы, которые тебе реально интересны. По выбранным — объясню подробно.
Что такое META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports и как @ConditionalOnClass решает, подключать конфиг или нет.
Что именно Boot делает за тебя, без чего ты бы писал руками.
Что будет, если клиент отправит запрос повторно.
Как это изменило деплой и контейнеризацию.
Почему build.gradle.kts (Kotlin DSL), а не build.gradle (Groovy).
Готов идти дальше?
Если что-то в теории непонятно — спрашивай, разберём подробнее.
Сначала пройди все секции и выбери хотя бы 1 вопрос.