Code Monkey home page Code Monkey logo

itmo-programming-technologies-4sem's Introduction

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 или подобные ему фреймворки.

itmo-programming-technologies-4sem's People

Contributors

alinaiil avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.