Программа и содержание
Сайт: Сайт автора
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.
Сложные запрос