Домашние задания в рамках курса по Spring
Использовать Spring JDBC и реляционную базу.
Опционально использовать настоящую реляционную БД, но можно использовать H2.
Предусмотреть таблицы авторов, книг и жанров.
Покрыть тестами, насколько это возможно.
решение: см. ветку create_library
Использовать JPA, Hibernate только в качестве JPA-провайдера.
Добавить комментарии к книгам, и высокоуровневые сервисы, оставляющие комментарии к книгам.
Покрыть DAO тестами используя H2 базу данных и соответствующий H2 Hibernate-диалект
решение: см. ветку migrate-to-jpa
Реализовать весь функционал работы с БД в приложении книг с использованием spring-data-jpa репозиториев.
решение: см. ветку migrate_to_spring_data_repo
Тесты можно реализовать с помощью spring-boot-starter-embedded-mongodb
решение: см. ветку migrate_to_mongodb
Создайте приложение с хранением сущностей в БД (можно взять DAOs из прошлых занятий)
Использовать классический View, предусмотреть страницу отображения всех сущностей и создания/редактирования.
View на Thymeleaf, classic Controllers.
решение: см. ветку crud_web_ui
Переписать приложение с классических View на AJAX архитектуру и REST-контроллеры.
Сделать SPA приложение на любом из Web-фреймворков (React)
решение: см. crud_rest_react
Вместо классического потока и embedded Web-сервера использован WebFlux.
Для избавления от блокирующих элементов база данных (снова) переведена на MongoDB.
решение: см. migrate_to_web_flux
В существующее CRUD-приложение добавлен Spring Security и механизм Form-based аутентификации.
решение: см. add_form_based_auth
В приложение добавлен кастомный security expression
решение: см. add_custom_security_expression
Разработать процедуру миграции данных из реляционного хранилища в NoSQL или наоборот используя Spring Batch.
решение: см. add_spring_batch
Добавлен сервис генерации случайных комментариев для новых книг, включен с использованием Spring Integration.
решение: см. add_spring_integration
Добавлен Spring Actuator, метрики, healthchecks, logfile и кастомный HealthCheck.
решение: см. add_spring_actuator
Приложение обернуто в docker-контейнер, БД тоже. Настроена связь между ними.
- Создать из docker/postgresql/ образ БД: $ docker build -t postgre_db .
- Создать из корня проекта образ приложения: $ docker build -t lib_app .
- Запускаем БД: $ docker run -d --rm -p 127.0.0.1:5432:5432/tcp postgre_db
- Запускаем приложение: $ docker run -it --rm --network="host" -p 127.0.0.1:8080:8080/tcp lib_app
- Все то же самое с docker-compose из корня приложения: $ docker-compose up
- Остановка: Ctrl+C
решение: см. add_docker
Внешний вызов обернут в Hystrix (Hystrix Javanica).
Для доступа в dashboard: зайти в http://localhost:8080/hystrix и в поле ввода прописать http://localhost:8080/actuator/hystrix.stream
решение: см. add_hystrix