Серверная программа, Инструменты разработки - Визуализация графа цитирования

Серверная программа - это веб-сервер, необходимый для получения и хранения графов. Сервер может создавать графы цитрования из библиотеки IEEE Xplore Digital Library [26], манипулировать ими и общаться с клиенткой программой.

Инструменты разработки

Сервер написан на языке Java версии 1.8 с использованием системы сборки Maven [27], библиотек и фреймворков Spring Boot [28], Spring MVC [29], Spring Data JPA [30], Jsoup [31] и Apache HttpComponents Client [32]. Также использовалась система управления базами данных PostgreSQL [33].

Основой приложения является универсальный фреймворк Spring Famework. Он состоит из множества компонент, работающих в единой экосистеме. Эти модули реализуют такие функции как Dependency Injection, управление транзакциями, систему авторизации и. т. д. Далее будут описаны детально модули, использующиеся в данном веб-сервере.

Обычно приложения, написанные с использованием Spring, являются Java веб-приложениями, работающими в каком-либо контейнере сервлетов, например, в Apache Tomcat. Однако для этого требуется установка и настройка самого контейнера, а также зачастую однотипная начальная настройка приложения, что является, по большому счету, излишними накладными расходами. В связи с этим был разработан Spring Boot, содержащий в себе уже настроенные встроенный контейнер сервлетов и компоненты Spring. По умолчанию контейнером является Apache Tomcat, однако его можно поменять на Jetty или Undertow. В данном проекте используется сервер по умолчанию. Также есть возможность выбора подключаемых модулей, через систему сборки Maven.

Тем самым Spring Boot приложение упаковывается (по умолчанию) не в war файл, который может запустить только контейнер сервлетов, а в jar файл, который запустится одинаково на любом компьютере, где есть Java необходимой версии.

Для работы с HTTP запросами используется компонент Spring MVC. Он позволяет обрабатывать и отвечать на запросы, добавляя такую функциональность, как гибкую систему маршрутизации URL путей, автоматическая сборка объектов из параметров запросов, конвертация ответа из объекта в JSON и т. д. За обработку отвечают классы, называемые "контроллерами". Контроллеры пишутся с максимально меньшим включением в них логики, которая выносится в классы, называемые "сервисами" и вызываемые контроллерами.

Сервисы содержат и инкапсулируют в себе всю бизнес логику приложения. На каждую операцию, которую пользователь захочет произвести пользователь с системой как правило должен быть специальный метод в каком-либо сервисе. Если метод сервиса обращается к базе данных, то весь метод оборачивается в транзакцию. Компонент Spring Data JPA позволяет это сделать просто пометив метод специальной Java аннотацией, в случае если подключение к базе данных происходить через JPA [34] (Java Persistence API).

Spring Data JPA значительно упрощает работу с базой данных через интерфейс JPA. JPA - Java API предоставляющий интерфейсы для сохранения объектов (сущностей) в базе данных (предполагается, что в реляционной) и загрузки данных из базы обратно в объекты. В данном проекте используется одна из самых популярных реализаций JPA - Hibernate. Все обращения к базе (базам) данных как правило реализуются в классах-репозиториях Репозитории - это классы, которые инкапсулируют обращение к базе данных без какой-либо дополнительной логики. Как правило на одну сущность пишется один класс-репозиторий.. Spring JPA позволяет создавать интерфейсы-репозитории не реализуя их. Все, что необходимо сделать - это создать интерфейс, наследующийся от интерфейса Repository и далее подключить его в сервисе с помощью Dependency Injection, которое поставляет ядро Spring Framework.

В данном проекте в качестве базы данных используется PostgreSQL. PostgreSQL работает, как отдельное приложение, к которому можно подключиться из Java кода. Подключение происходит через JDBC драйвер при помощи вышеупомянутого Hibernate. После подключения Hibernate валидирует схему и создает недостающие таблицы и столбцы.

Похожие статьи




Серверная программа, Инструменты разработки - Визуализация графа цитирования

Предыдущая | Следующая