Веб-разработка

Учебник Spring Boot для начинающих

23 урока · 6 разделов · бесплатно, без регистрации

Полный курс по Spring Boot 3 — фактическому стандарту бэкенда на Java. Вы пройдёте путь от первого эндпоинта до production-приложения: освоите слоистую архитектуру, REST-контроллеры, инверсию управления и конструкторное внедрение зависимостей, работу с базой через Spring Data JPA, сервисный слой с транзакциями, DTO и валидацию, безопасность на Spring Security 6 с BCrypt и JWT, тестирование и деплой в Docker.

Курс построен на актуальном стеке 2024–2025 годов: Spring Boot 3.x, Java 21, namespace jakarta, современные best practices. Каждый урок содержит разбор «под капотом», частые ошибки, рекомендации и запускаемые интерактивные врезки, объясняющие логику фреймворка на простых примерах.

Курс «Spring Boot: бэкенд на Java» состоит из 6 разделов и 23 уроков: Введение в Spring Boot, REST-контроллеры, Внедрение зависимостей (DI), Spring Data JPA, Сервисы, DTO и валидация и Безопасность и production-практика. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Введение в Spring Boot

    1. Что такое Spring Boot и зачем он нужен

      Spring Boot — фреймворк для быстрой разработки бэкенда на Java: автоконфигурация, встроенный сервер, стартеры. Разбираем, какую боль он решает.

    2. Архитектура приложения: слои и поток запроса

      Слоистая архитектура Spring Boot: Controller → Service → Repository → БД. Разбираем путь HTTP-запроса от клиента до базы и обратно с ASCII-диаграммой.

    3. Первое приложение: структура проекта и Spring Initializr

      Создаём проект на start.spring.io, разбираем структуру Maven/Gradle, application.yml, первый запуск и эндпоинт. Практический старт.

    4. Maven, зависимости и стартеры

      Как Maven управляет зависимостями, что такое spring-boot-starter, parent POM и BOM. Разбираем, откуда берутся согласованные версии библиотек.

  2. 2 REST-контроллеры

    1. REST-контроллеры: @RestController и маршрутизация

      @RestController, @RequestMapping, @GetMapping и друзья. Как Spring сопоставляет URL с методами и сериализует ответ в JSON.

    2. Параметры запроса: @PathVariable, @RequestParam, @RequestBody

      Три способа принять данные от клиента: переменные пути, query-параметры и тело запроса. Когда какой использовать и как Spring их связывает.

    3. HTTP-методы и статусы: ResponseEntity и @ResponseStatus

      Управление кодами ответа: 200, 201, 204, 404. ResponseEntity для полного контроля над статусом и заголовками, @ResponseStatus для простоты.

    4. Глобальная обработка ошибок: @RestControllerAdvice и ProblemDetail

      Централизованная обработка исключений через @RestControllerAdvice. Стандарт ProblemDetail (RFC 7807) для единообразных ошибок API.

  3. 3 Внедрение зависимостей (DI)

    1. IoC-контейнер и бины: сердце Spring

      Инверсия управления и контейнер бинов. Как Spring создаёт объекты, хранит их и отдаёт по запросу. Основа всего фреймворка.

    2. Внедрение зависимостей: конструкторное против полевого

      Конструкторное внедрение — современный стандарт. Почему оно лучше полевого (@Autowired на поле): immutability, тестируемость, явные зависимости.

    3. Стерео-аннотации и @Bean: способы объявить бин

      @Component, @Service, @Repository, @Controller и метод @Bean в @Configuration. Когда что использовать и чем они отличаются.

    4. Профили, @Value и внешняя конфигурация

      @Value для чтения настроек, @ConfigurationProperties для типобезопасной конфигурации, профили (@Profile) для разных окружений: dev, prod, test.

  4. 4 Spring Data JPA

    1. Сущности и ORM: @Entity, @Id и маппинг таблиц

      Объектно-реляционное отображение: класс ↔ таблица, поле ↔ колонка. Аннотации @Entity, @Table, @Id, @GeneratedValue, @Column в namespace jakarta.

    2. Репозитории Spring Data: JpaRepository и магия методов

      JpaRepository даёт CRUD из коробки. Производные запросы по имени метода (findByEmail) — Spring сам генерирует SQL. Никакого ручного кода доступа.

    3. @Query, JPQL и нативные запросы

      Когда имени метода мало: @Query с JPQL для сложных запросов, нативный SQL, именованные параметры. Контроль над тем, что уходит в базу.

    4. Связи между сущностями и пагинация

      Отношения @OneToMany, @ManyToOne, ленивая загрузка и проблема N+1. Пагинация через Pageable и Page для больших наборов данных.

  5. 5 Сервисы, DTO и валидация

    1. Сервисный слой и транзакции (@Transactional)

      Сервис — место бизнес-логики. @Transactional обеспечивает атомарность: всё или ничего. Разбираем границы транзакций и откат при ошибке.

    2. DTO и маппинг: почему нельзя отдавать сущности наружу

      DTO отделяет API от модели БД. Почему опасно возвращать @Entity в JSON: утечка данных, LazyInitializationException, жёсткая связь. Маппинг entity ↔ DTO.

    3. Валидация входных данных: Bean Validation и @Valid

      Декларативная валидация: @NotNull, @Email, @Size на полях DTO + @Valid в контроллере. Как ошибки превращаются в понятный ответ 400.

  6. 6 Безопасность и production-практика

    1. Spring Security 6: SecurityFilterChain и цепочка фильтров

      Основы Spring Security 6: цепочка фильтров, бин SecurityFilterChain с лямбда-DSL, requestMatchers вместо antMatchers. Современная конфигурация без WebSecurityConfigurerAdapter.

    2. Аутентификация: BCrypt, UserDetails и JWT

      Хранение паролей через BCryptPasswordEncoder, модель UserDetails, основы stateless-аутентификации через JWT-токены. Почему пароли никогда не хранят в открытом виде.

    3. Тестирование и Spring Boot Actuator

      Юнит-тесты с JUnit 5 и Mockito, срезы @WebMvcTest/@DataJpaTest, интеграционные @SpringBootTest. Actuator для health-чеков и метрик в проде.

    4. Деплой, профили и production-практики

      Сборка исполняемого JAR, профили окружений, конфиги через переменные окружения, упаковка в Docker, чек-лист готовности к продакшену.