Программа и содержание

Сайт: Сайт автора

18 недель беспощадного кодинга в формате спринтов

Каждый спринт — это отдельная практическая тема, которую вы проходите, закрепляете на домашнем задании и применяете в реальном выпускном проекте EventManager

Для кого курс

Совсем новичок

Сэкономишь год самостоятельных несистемных попыток что-то понять и сразу получишь харды уровня middle

Есть база, но ещё не работаю

Закроешь пробелы и изучишь всё, что нужно реальной работе, чтобы наконец-то вкатиться

Джун

Быстро прокачаешься по хардам, чтобы заперформить в проекте и апнуть грейд ИЛИ найти новую работу на позицию миддла

Миддл на устаревшем стеке

Подтянешь все харды до актуального рынку уровня и погрузишься в архитектуру с микросервисами, чтобы быстрее вырасти по грейду/найти новую работу

Научим всему что бигтехи требуют в вакансиях:

Строить микросервисы, которые не падают под нагрузкой и не умирают от продовых кейсов

Делать авторизацию с нуля: JWT, роли, фильтры, обработка прав, единый формат ошибок

Писать бизнес логику и фичи: обработка событий, статусы, задачи по расписанию, отправка нотификаций, история изменений, агрегация событий

Подключать Kafka и строить асинхронные пайплайны с гарантированной доставкой

Делать кэширование и ускорять сервисы до миллисекундных ответов

Разворачивать инфраструктуру: Docker, Redis, Postgres, Liquibase миграции

Все знания разложены по полочкам от «А» до «Я»

Программа идёт от простого к сложному, каждый спринт логично вытекает из предыдущего

Сначала фундамент: Spring Core, потом настройки: MVC, Hibernate, в конце — продакшен-архитектура

Разбираем именно до того уровня глубины, до которого это необходимо для работы и собесов

К каждому уроку конспекты + доп. материалы для углубления

Живые воркшопы раз в 2 недели — разбираем домашки, отвечаем на вопросы, общаемся. Есть записи, если пропустил

Программа:

Спринт 1. Spring Core — фундамент современного Java backend’а

Коротко: разберёшься, как работает Spring «под капотом»: контейнер, DI, жизненный цикл бинов, конфигурация и базовый AOP. Перестаёшь «разбрасывать new по проекту», начинаешь мыслить как backend-разработчик.

Что внутри:

Зачем вообще нужен Spring: чем отличается от «голой» Java и почему на нём пишут почти все современные backend’ы.

IoC-контейнер и ApplicationContext: как Spring создаёт и связывает объекты.

Dependency Injection:

внедрение зависимостей через конструктор / поле / сеттер;

@Component, @service, @Repository, @Configuration, @Bean;

@Autowired, @Qualifier, @Primary.

Области видимости бинов: singleton, prototype, web-scope и где они реально нужны.

Жизненный цикл бина: создание, инициализация, уничтожение (@PostConstruct, @PreDestroy).

Работа с конфигурацией: application.properties, профили (@profile), вынесение настройки из кода.

Введение в AOP:

что такое аспектно-ориентированное программирование;

логирование, метрики, технический cross-cutting без засорения бизнес-логики.

Как не превращать проект в “спагетти”:

базовые принципы SOLID;

разделение ответственности между слоями.

Практика:

Ты поднимешь первый учебный проект на Spring Core:

небольшая доменная область — учебный «банкинг»;

все сервисы и репозитории собираются через DI, без ручного new;

конфигурация вынесена в properties и профили;

написан хотя бы один AOP-аспект: логирование или метрики.

Результат:

готовый репозиторий с живым Spring-приложением;

понимание, что делает Spring-контейнер и зачем нужны все эти аннотации.

Спринт 2. Hibernate Core — работа с БД как у взрослых

Коротко: учишься работать с реальной базой данных через JPA/Hibernate: сущности, связи, CRUD, жизненный цикл объектов, ленивые загрузки и первые грабли.

Что внутри:

ORM, JPA и Hibernate:

зачем маппить объекты на таблицы;

чем это лучше ручного JDBC.

Поднимаем PostgreSQL в Docker:

базовая конфигурация;

создание схемы и пользователя.

JPA-сущности:

@Entity, @Table, @Id, @Column;

типы полей, генерация идентификаторов.

CRUD-операции через Hibernate:

сохранение, поиск, обновление, удаление;

разбор SQL, который реально уходит в БД.

Жизненный цикл сущностей:

Transient - Persistent - Detached - Removed;

что делает Session / EntityManager.

Связи:

@OneToOne, @OneToMany, @ManyToOne, @ManyToMany;

каскады, orphanRemoval, как не удалить лишнего.

Ленивая и жадная загрузка:

FetchType.LAZY vs EAGER;

классическая N+1-проблема на примерах.

Практика:

Учебный проект «Каталог / курсы / студенты»:

несколько таблиц в PostgreSQL;

сущности с разными типами связей (1:1, 1:N, N:M);

CRUD-операции с разбором SQL, который генерит Hibernate.

Результат

ты уверенно создаёшь сущности и связи;

понимаешь, что происходит с объектом в разных состояниях;

не боишься смотреть в реальные SQL-запросы.

Спринт 3. Spring Boot Web — веб и HTTP на практике

Коротко: выходишь в веб: поднимаешь REST API, работаешь с HTTP, DTO, валидацией и обработкой ошибок. Практика — Payments API: пользователи, их заказы и платежи, плюс тесты через MockMvc.

Что внутри:

Введение в Spring Boot:

стартеры, автоконфигурация, встроенный Tomcat;

структура боевого backend-приложения.

HTTP и REST:

методы GET/POST/PUT/DELETE, статус-коды, заголовки;

хорошие и плохие REST-эндпоинты.

Контроллеры:

@RestController, @RequestMapping, @GetMapping, @PostMapping и др.;

@PathVariable, @RequestParam, @RequestBody.

DTO и валидация:

разделение сущностей и DTO;

Bean Validation: @valid, @NotBlank, @email, @min и т. д.

Централизованная обработка ошибок:

@ControllerAdvice, @ExceptionHandler;

единый формат ошибок для клиента.

Тестирование веб-слоя:

MockMvc;

проверка кодов ответа, тела, ошибок.

Практика:

Ты реализуешь учебный Payments API:

пользователи / клиенты и их заказы;

создание заказов, получение списка заказов пользователя, просмотр деталей;

базовая модель «платежа» — например, статус PAYMENT_PENDING / PAID.

Что именно сделаешь руками:

набор REST-эндпоинтов для пользователей и их заказов;

DTO с валидацией входящих данных;

единый формат API-ошибок;

тесты контроллеров через MockMvc: успешные кейсы + ошибки.

Результат

у тебя есть законченный REST-сервис Payments API;

ты умеешь писать и тестировать нормальные HTTP-сервисы, а не «крученные методы».

Спринт 4. Spring Data JPA + EventManager | Iteration 1

Коротко: переходишь от маленьких учебных примеров к выпускному проекту EventManager. Подключаешь Spring Data JPA, строишь нормальные репозитории и делаешь первую итерацию проекта.

Что внутри:

Архитектура слоёв:

Controller - Service - Repository;

почему «всё в контроллере» — зло.

Spring Data JPA:

JpaRepository, готовые CRUD-методы;

query-методы: поиск по полям без явного SQL.

Сложные запрос