15.27M
Category: programmingprogramming

YLab. Pure Java To Spring. Framework. Занятие 1

1.

YLab. Pure Java To Spring
Framework
Занятие 1
Алексей
Сугробов
старший javaразработчик,
архитектор, Team Lead
10.2023

2.

О чем поговорим сегодня
-
Команда, с которой предстоит работать
Концепция курса
Дорожная карта курса
Процесс выполнения и проверки домашних заданий
Стек технологий
Требование к проекту
Домашнее задание
Полезные ссылки

3.

Команда
Андрей Зорин
В YLab c декабря 2022 года
Данила Рассохин
В YLab c сентября 2022 года
Александр Казеев
В YLab c июля 2022 года
Магомедамин Магомедов
В YLab c мая 2022 года
Лада Афанасьева
В YLab c сентября 2022 года
Николай Бергер
В YLab c декабря 2022 года

4.

Цель курса: обучение созданию приложений на Spring
Аудитория: студенты с базовыми знаниями Java (core и collections)
Продолжительность курса: 5 недель интенсив + 6 недель стажировка
Методика обучения:
-
теоретический базис
самостоятельное изучение
домашние задания
ревью и обратная связь от менторов
Оценка успеха:
- оценка выполнения заданий на каждой неделе
- финальный проект, интегрирующий все изучение инструменты
- оценка активности студентов

5.

Дорожная карта курса
Интенсив (5 недель):
-
Вводная лекция
JDBC. Миграции БД
Сервлеты. Аспектно-ориентированное программирование
Знакомство с Spring Framework
Spring Boot
Стажировка (6 недель):
-
Spring Data
Spring Web
Spring Security
Введение в микросервисную архитектуру
Spring Cloud Feign
Spring Cloud Streams. Kafka

6.

Процесс выполнения домашних заданий
Сроки ДЗ:
- Задание выдается после вебинара
- Задание необходимо выполнить до среды 18.00 следующий недели
Формат отправки ДЗ:
- Решение должно быть загружено на github, ссылка отправлена на платформу в окно ДЗ (под
лекцией есть окно «Комментарий», туда отправлять нельзя, т.к. преподаватель не увидит
вашего ответа на ДЗ)
- Отправленное на проверку задание должно компилироваться, собираться и запускаться на ПК
менторов без каких-либо “плясок с бубнами”
Критерии прохождения курса:
- Критерии проверки задания включают правильность выполнения, структуру кода, корректность
использования изученных инструментов
- На стажировку допускаются только те студенты, которые выполнили все задания и уложились в
обозначенные сроки

7.

Требования к проекту
- Onion-архитектура, каждый слой в отдельном пакете
- Обязательно наличие пакетов in, out (in - для входящего потока данных,
out - для исходящего)
- Обязательно наличие unit-тестов, использование mockito для имитации
поведения других слоев, assertJ - для проверок
- Самодокументированный код с понятным названием методов,
переменных, отсутствие огромного “полотна” кода в методах
- Обязательно наличие javadoc
- Обязательно описание процесса сборки и запуска проекта в
Readme.MD
- Обязательно использование инструментов сборки

8.

Стек технологий
- java 17
- JDBC
- servlet-api
- aspectJ
- PostgreSQL
- Spring Boot 3.0 + стек спринга (Data, Security, Web, Cloud)
- Junit, Mockito, assertJ
- Apache Maven/Gradle

9.

Домашнее задание №1 - Wallet-Service
Необходимо создать сервис, который управляет кредитными/дебетовыми транзакциями от имени игроков.
Денежный счет содержит текущий баланс игрока. Баланс можно изменить, зарегистрировав транзакции на счете,
либо дебетовые транзакции (удаление средств), либо кредитные транзакции (добавление средств). Создайте
REST API и реализацию, которая соответствует описанным ниже требованиям и ограничениям.
Требования





Текущий баланс игрока
Дебет/снятие средств для каждого игрока Дебетовая транзакция будет успешной только в том случае, если
на счету достаточно средств (баланс - сумма дебета >= 0). Вызывающая сторона предоставит
идентификатор транзакции, который должен быть уникальным для всех транзакций. Если идентификатор
транзакции не уникален, операция должна завершиться ошибкой.
Кредит/пополнение на игрока. Вызывающая сторона предоставит идентификатор транзакции, который
должен быть уникальным для всех транзакций. Если идентификатор транзакции не уникален, операция
должна завершиться ошибкой.
Просмотр истории пополнения/снятия средств игроком
Инетфейс взаимодействия с пользователем - консоль
Нефункциональные требования



использование docker и docker-compose
Unit-тестирование, testcontainers в тестах
Каждое задание должно быть выполнено в отдельной ветке Git-репозитория и актуальное состояние
должно храниться в ветке develop

10.

Полезные ссылки
- Onion-архитектура: https://hashdork.com/ru/onion-architecture/, https://medium.com/expediagroup-tech/onion-architecture-deed8a554423
- Maven: https://maven.apache.org/guides/, https://maven.apache.org/guides/gettingstarted/maven-in-five-minutes.html
- Gradle: https://docs.gradle.org/current/userguide/userguide.html,
https://docs.gradle.org/current/samples/sample_building_java_applications.html
- Junit5: https://junit.org/junit5/docs/current/user-guide/
- Mockito: https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html,
https://www.baeldung.com/mockito-series
- AssertJ: https://assertj.github.io/doc/, https://www.baeldung.com/introduction-to-assertj
- GitHub: https://github.com
- Java code conventions: https://www.magnumblog.space/java/translating-java-codeconventions

11.

Вопросы?
English     Русский Rules