Требуемые знания: Java Core - Basic Syntax (0.5 - 3 месяца), HTML (0.5 - 1 месяц), CSS (0.5 - 1 месяц)
Получить базовый опыт работы с Java Core + Spring. Взаимодействие client - server архитектуры под средством взаимодействия HTTP REST API. Дополнительно: Работа с БД, в частности JPA с использованием простых нативных запросов и запросов “из коробки jpa”. JPA - hibernate. GIT - основные команды. IDEA - основы работы. SWAGGER - генерируемый клиент для тестирования api. Скачаем простой шаблон html + css с интернета и сделаем для него контроллер с методами запросов к бекенду.
- 1.1 Создадим класс, в котором напишем основные методы для работы с калькулятором: класс сервиса, например CalcService. Вызываем в классе App.
- 1.2 Напишем простой тест, который сможем запускать и проверять результаты работы методов.
- 1.3 Доработаем тесты, опишем кейсы и проверим работу методов сервиса при разных входных.
- 1.4 Подключим spring web, с помощью которого реализуем REST контроллер: Укажем верхенуровневый роут calc и вызовы методов соблюдая правила rest.
- 1.5 Проверим работу контроллера с помощью postman.
- 1.6 Напишем unit тесты для проверки контроллера: Тесты в аналогичных пакетах директории test, методы называем названиями реальных методов с припиской Test в имени.
- 1.7 Добавим простое логирование методов сервиса, контроллера
- 1.8 Подключим swagger и посмотрим его работу: Конфиг его поместим в отдельный пакет config. Назвем SwaggerConfig.
- 1.9 Добавим объекты DTO для клиента: Их поместим в пакет dto. ResultDTO в подпакет client и ArgumentDTO в подпакет server.
- 1.11 Рефакторинг, убираем отдельные методы операций калькулятора сделав один для работы с операциями: На вход которому приходит тип операции (enum класс).
- 1.9 Простая валидация аргументов для калькулятора
- 1.10 Кастомные ошибки при валидации: Например, NotFoundException(String value, Class className)!.
- 2.1 Скачиваем шаблон html + css и сделаем простой проект js, без глубокого погружения в понимание работы js
- 2.2 Создадим в vue js основные методы калькулятора, такие же, которые мы делали на 1.1. и добавим оперцию сброса - очистки дисплея
- 2.3 Создадим контроллер в vue js для общения с сервером.
- 3.1 Создадим простую сущность, History для хранении в БД истории операций: Таблица History(uuid: String (auto not null), creationDate: Date (not null), operation: String (not null), arg1: Long, arg2: Long, result: Long (not null))
- 3.2 Подключим spring jpa
- 3.3 Скачаем драйвер postgres и установим локально postgres.
- 3.4 Генерим таблицу с помощью hibernate.
- 3.4 Создаем репозиторий для сущности истории.
- 3.5 Добавляем метод сохранения в истории записи при вызове метода калькулятора.
- 3.6 Добавим новый рест api для истории с методом получении всей истории операций.
- 3.7 Добавим CRUD методы для истории.
- 3.8 Добавим остальные методы в API истории.
- 3.9 Напишем более сложный тест для операций калькулятора, который будет мокать spring репозиторий.
- 3.10 В таблицу History добавим id сессии - idSession из браузера, который будем возвращать при запуске клиента значение результата, которое мы получили последним.
- 3.11 Операцию clear реализуем на сервере и также будем сохранять в истории.
С какими параметрами создаем проект: maven, java 8, mockito. Начиная с 1.4 подключаем spring boot, starter web. C 1.8 springfox в котором swagger. С 2.1 js (vue js). С 3.2 spring jpa starter и дозаполним properties. P.S. Может я что то упустил, тогда в процессе поправлю.