Применение Spring, Thymeleaf и Retrofit в разработке информационных систем | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 28 декабря, печатный экземпляр отправим 1 января.

Опубликовать статью в журнале

Авторы: ,

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №20 (310) май 2020 г.

Дата публикации: 14.05.2020

Статья просмотрена: 118 раз

Библиографическое описание:

Белова, Т. В. Применение Spring, Thymeleaf и Retrofit в разработке информационных систем / Т. В. Белова, Д. О. Белова. — Текст : непосредственный // Молодой ученый. — 2020. — № 20 (310). — С. 23-25. — URL: https://moluch.ru/archive/310/69795/ (дата обращения: 17.12.2024).



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

Ключевые слова: информационная система, Spring, Thymeleaf, Retrofit.

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

Новизна рассматриваемой информационной системы состоит в том, что она состоит из двух частей, связанных общим серверным модулем.

Первая часть системы представляет собой web-приложение, позволяющее спортсменам получать информацию о предстоящих событиях, регистрироваться на соревнования в режиме онлайн и просматривать результаты прошедших пробегов. Клиентская часть этого приложения разработана на основе Thymeleaf [1].

Вторая часть системы представляет собой мобильное приложение, клиентская часть которого разработана с использованием библиотеки Retrofit [2].

Серверный модуль реализован с использованием Spring [3].

Рассмотрим сначала более подробно, как организована серверная часть. Spring в настоящее время является одним из самых популярных фреймворков для программирования на Java. Он был разработан в 2003 году, и с тех пор постоянно совершенствуется. Одним из паттернов проектирования, используемых в Spring, является внедрение зависимостей (Dependency Injection). Это один из видов инверсии управления, который позволяет сделать классы как можно более независимыми друг от друга для упрощения возможности их дальнейшего использования и написания юнит-тестов. Внедрение зависимостей в данном случае осуществляется через соответствующие аннотации.

В качестве примера применения принципа внедрения зависимостей в нашем приложении рассмотрим несколько классов и интерфейсов из нашего приложения.

Для хранения информации о зарегистрированном пользователе в базе данных есть сущность User. Доступ к ней осуществляется через интерфейс UserRepository. Причем реализации этого интерфейса в программном коде нет. Предполагается, что Spring выберет подходящую реализацию интерфейса из библиотеки. Далее, определяется интерфейс сервиса UserService и его реализация UserServiceImpl. Чтобы использовать в реализации сервиса репозиторий, мы объявляем его следующим образом:

@Autowired

private UserRepository userRepository;

Аннотация @Autowired указывает, что Spring сам найдет походящую реализацию для этого интерфейса.

В результате сервис не зависит от реализации репозитория, он только предоставляет методы для обработки данных. Аналогично, в классе UserController, предназначенном для обработки запросов к базе данных, в качестве одного из полей указано

@Autowired

UserService userService;

Так же, как и в предыдущем случае, Spring найдет реализацию этого интерфейса.

Теперь, например, для того чтобы перейти к другому способу хранения данных, достаточно написать свою реализацию интерфейса UserRepository (или указать в качестве родительского класса одну из библиотечных реализаций).

Таким образом, мы получаем программный код, наиболее удобный для добавления или изменения функционала.

В процессе разработки использовался паттерн MVC (Model-View-Controller), который позволяет разделить шаблон web-страницы, данные и методы их обработки, что улучшает читаемость программного хода и упрощает разработку и отладку приложения [4]. Впервые этот шаблон был описан норвежским профессором Трюгве Реенскаугом в 1979 году [5]. Согласно такому подходу, архитектура приложения разбивается на три взаимосвязанные части: модель (Model), представление (View) и контроллер (Controller), как показано на рис.1:

Рис. 1. Шаблон MVC

Первая часть — модель — содержит бизнес-логику приложения. Эта часть не зависит от остальных и не содержит никаких сведений о контроллере и представлении. В нашем приложении модель представляет собой базу данных.

Задача представления — отображение данных, полученных от модели, и взаимодействие с пользователем. Представление имеет доступ только к чтению данных и не может их изменять. В нашем приложении два представления: web-страница для web-приложения и текстовые поля на экране мобильного телефона для мобильной части.

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

Применение Spring Security [6] позволило реализовать разделение ролей пользователей web-приложения.

Незарегистрированный пользователь имеет доступ только к списку предстоящих соревнований и архиву результатов. После регистрации в системе спортсмен может просмотреть свои результаты со всех прошедших соревнований и зарегистрироваться на любое из доступных мероприятий. Человек, обладающий правами администратора, может добавлять информацию о предстоящих соревнованиях, формировать стартовые списки, добавлять в систему финишные протоколы.

Теперь рассмотрим более подробно организацию клиентской части web-приложения. Используемый в ее реализации движок шаблонов Thymeleaf позволяет разработчику создавать динамические web-страницы путем встраивания в html-код специальных атрибутов для связи представления с контроллером. Для подключения Thymeleaf к html-странице используется тег .

Атрибуты начинаются с префикса th. Например, описание таблицы со списком будущих соревнований выглядит следующим образом:

Название

Расположение Дата проведения

Атрибуты, начинающиеся с префикса th, указывают, какой запрос отправлять контроллеру, и где разместить данные, полученные в результате этого запроса.

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

Передача запросов в базу данных организована с использованием библиотеки для мобильных приложений Retrofit [2]. Эта библиотека разработана компанией Square, с ее помощью можно создавать запросы к web-сервисам в синхронном и асинхронном режиме.

Информационная система разработана на основе архитектурного стиля REST, впервые описанного Роем Томасом Филдингом в его докторской диссертации «Архитектурные стили и проектирование сетевых программных архитектур» [7] в 2000 г. Идея этого стиля заключается в соблюдении набора ограничений, которые следует учитывать при проектировании распределенной гипермедиа-системы. Это позволило разработать единую серверную часть для обработки запросов web-страницы и мобильного приложения.

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

Информационная система для регистрации пользователей прошла проверку в марте-апреле 2020 года при подготовке к проведению пробега в честь Дня космонавтики. Организованный в ней процесс регистрации получил высокую оценку как у судей, так и у участников соревнования. К сожалению, тестирование мобильной части приложения пришлось отложить в связи с отменой всех ближайших соревнований.

Планируется дальнейшая доработка системы путем добавления возможности голосового ввода номера участника.

Литература:

  1. https://www.thymeleaf.org/documentation.html.
  2. https://square.github.io/retrofit.
  3. https://spring.io/guides.
  4. https://www.codecademy.com/articles/mvc.
  5. https://ru.wikipedia.org/wiki/Реенскауг,_Трюгве.
  6. https://docs.spring.io/spring-security/site/docs/current/reference/html5.
  7. https://www.ics.uci.edu/~fielding/pubs/dissertation/fielding_dissertation.pdf.
Основные термины (генерируются автоматически): MVC, баз данных, внедрение зависимостей, интерфейс, информационная система, клиентская часть, модель, проведение соревнований, программный код, часть системы.


Ключевые слова

информационная система, Spring, Thymeleaf, Retrofit

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

Сравнительный анализ методологий разработки ПО Agile и Waterfall

Цель данной статьи — произвести сравнительный анализ методологий разработки программного обеспечения на примере Agile и WaterFall. Формирование критериев сравнения. Выявление преимуществ и недостатков.

Fluid Interfaces, их виды, ключевые особенности и теория дизайна при разработке UI/UX приложений

В статье авторы пытаются определить основные используемые виды «текучих» интерфейсов, их ключевые особенности и теорию дизайна при использовании в разработке UI/UX приложений.

Гибкие методологии разработки программного обеспечения

В статье автор анализирует гибкие методологии разработки программного обеспечения, такие как Agile, Scrum, Kanban. Выделяет преимущества и недостатки для Scrum, Kanban.

Роевой интеллект для управления БПЛА в FANET

В статье представлено краткое описание мультиагентной системы управления. Рассмотрена возможность применения роевых алгоритмов для моделирования коллективного интеллекта в системах управления в FANET.

Инновационные технологии и инструменты компьютерного моделирования в обучении информатике в школе

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

Формализация требований для средств разработки и обучения нейронных сетей

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

PlantUML: создание диаграмм с использованием текстового синтаксиса

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

Использование искусственных нейронных сетей для решения задач информационной безопасности

В статье автор исследует возможности применения искусственных нейронных сетей в решении некоторых задач информационной безопасности. В статье рассматривается модель ИНС для обнаружения вредоносного ПО на Android и потенциал методов машинного обучения...

Использование программного обеспечения AnyLogic в имитационном моделировании

В статье рассматриваются возможности и применение среды программного обеспечения AnyLogic для использования в имитационном моделировании.

Создание и заполнение базы данных «Студенты»

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

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

Сравнительный анализ методологий разработки ПО Agile и Waterfall

Цель данной статьи — произвести сравнительный анализ методологий разработки программного обеспечения на примере Agile и WaterFall. Формирование критериев сравнения. Выявление преимуществ и недостатков.

Fluid Interfaces, их виды, ключевые особенности и теория дизайна при разработке UI/UX приложений

В статье авторы пытаются определить основные используемые виды «текучих» интерфейсов, их ключевые особенности и теорию дизайна при использовании в разработке UI/UX приложений.

Гибкие методологии разработки программного обеспечения

В статье автор анализирует гибкие методологии разработки программного обеспечения, такие как Agile, Scrum, Kanban. Выделяет преимущества и недостатки для Scrum, Kanban.

Роевой интеллект для управления БПЛА в FANET

В статье представлено краткое описание мультиагентной системы управления. Рассмотрена возможность применения роевых алгоритмов для моделирования коллективного интеллекта в системах управления в FANET.

Инновационные технологии и инструменты компьютерного моделирования в обучении информатике в школе

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

Формализация требований для средств разработки и обучения нейронных сетей

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

PlantUML: создание диаграмм с использованием текстового синтаксиса

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

Использование искусственных нейронных сетей для решения задач информационной безопасности

В статье автор исследует возможности применения искусственных нейронных сетей в решении некоторых задач информационной безопасности. В статье рассматривается модель ИНС для обнаружения вредоносного ПО на Android и потенциал методов машинного обучения...

Использование программного обеспечения AnyLogic в имитационном моделировании

В статье рассматриваются возможности и применение среды программного обеспечения AnyLogic для использования в имитационном моделировании.

Создание и заполнение базы данных «Студенты»

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

Задать вопрос