Skip to content

alinaiil/ITMO-programming-technologies-4sem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ITMO-programming-technologies-4sem

Programming Technologies, IS ITMO, 4th semester (Java)

Код каждой из лабораторных работ находится в соответствующей ветке. В ветке main находится код Lab 1 (banks + banks-console) и Lab 5 (kotiki).

Текст заданий лабораторных:

Lab-1 (branch)

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

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

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

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

Система сборки предоставляется на выбор студента: Gradle/Maven.

Lab-2 (branch)

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

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

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

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

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

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

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

Проект должен собираться с помощью Maven или Gradle (на выбор студента). Слой доступа к данным и сервисный слой должны являться двумя разными модулями Maven/Gradle. При этом проект должен полностью собираться одной командой.

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

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

Lab-3 (branch)

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

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

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

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

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

Lab-4 (branch)

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

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

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

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

Lab-5 (branch)

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

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

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

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

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

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

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

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