Лабораторные работы по дисциплине "Технологии программирования на Java"

Изучение синтаксиса языка Java и нового окружения.

В рамках лабораторной следует переписать лабораторную работу №4 из прошлого семестра.

Необходимо использовать Javadoc и сгенерировать html-документацию.

Фреймворк для тестирования - JUnit.

Система сборки: Maven.

Нужно написать сервис по учету котиков и их владельцев.

Существующая информация о котиках:

  • Имя
  • Дата рождения
  • Порода
  • Цвет (один из заранее заданных вариантов)
  • Хозяин
  • Список котиков, с которыми дружит этот котик (из представленных в базе)

Существующая информация о хозяевах:

  • Имя
  • Дата рождения
  • Список котиков

Сервис должен реализовывать архитектуру Сontroller-Service-Dao.

Вся информация хранится в БД PostgreSQL. Для связи с БД должен использоваться Hibernate.

При тестировании рекомендуется использовать Mockito, чтобы избежать подключения к реальным базам данных.

К созданному в прошлой лабораторной сервису добавляется Spring.

Сервис должен предоставлять HTTP интерфейс (REST API) для получения информации о конкретных котиках и владельцах и для получения фильтрованной информации (например, получить всех рыжих котиков)

Внимание: недопустимо отдавать через HTTP интерфейс сущности JPA. Рекомендуется создать отдельные оберточные классы.

Сервисы и DAO должны превратиться в Spring Bean’ы с использованием Dependency Injection (Autowired). DAO при этом наследуют JpaRepository и имеет шаблонные Spring Data JPA методы.

Необходимо показать работоспособность endpoint’ов через HTTP запросы (рекомендуется Postman).

Владельцы недовольны, что инфрмацию о котиках может получить кто угодно. В этой лабораторной мы добавим авторизацию к сервису.

Добавляется роль администратора. Он имеет доступ ко всем методам и может создавать новых пользователей. Пользователь связан с владельцем в соотношении 1:1.

Методы по получению информации и котиках и владельцах должны быть защищены Spring Security. Доступ к соотвутсвующим endpoint’ам имеют только владельцы котиков и администраторы. Доступ к методам для фильтрации имеют все авторизованные пользователи, но на выходе получают только данные о своих котиках.

Внимание: эндпоинты, созданные на предыдущем этапе, не должны быть удалены.

Lab-5

Бизнес прочитал статью о том, что микросервисы это круто и попросил нас разбить программу на микросервисы.

Из созданного приложения выделяются три микросервиса:

  • Микросервис доступа к котикам.
  • Микросервис доступа к владельцам.
  • Микросервис с внешними интерфейсами.

Все они являются разными приложениями.

Все созданные ранее эндпоинты и авторизация переезжает на третий микросервис.

Общение между микросервисами происходит посредством RabbitMQ/Kafka (на выбор студента).

Сервисы доступа к котикам и доступа к владельцам могут либо быть подключены к одной БД, либо иметь разные БД. Во втором случае недопустимо делать один запрос на получение данных из двух БД, запроса должно быть два (по одному в каждую).

Внимание: недопустимо передавать через RabbitMQ/Kafka JPA сущности. Рекомендуется создать отдельные оберточные классы.

Рекомендуется выделить модуль с JPA сущностями в отдельный подключаемый модуль.