Пружинная загрузка с клиентом Swing - PullRequest
0 голосов
/ 08 октября 2019

У меня вопрос дизайна: я использую DB + Hibernate + SpringBoot в качестве серверной части на сервере и использую Swing-клиенты на рабочих столах.

Я рассматриваю для нового проекта следующую архитектуру:

Серверная часть (возможно, на отдельных серверах):

  • БД SQL
  • Spring Boot + Java-приложение Hibernate

Интерфейс (-ы):

  • Java-приложение Swing
  • позже: мобильное приложение;Браузер

Я немного искал, но все еще сомневаюсь и чувствую, что что-то упустил. Я изначально рассматривал возможность использования React для front end. Но это займет слишком много времени для меня, и у меня есть много компонентов Swing, которые я уже оптимизировал (и это мои приложения, как правило, используют множество сеток с правками "на месте")

Я искал Spring +Swing, но я обнаружил, что все работает на одной и той же JVM. Я думаю, что их разделение позволит мне (позже) создать мобильный или веб-интерфейс, используя тот же сервер.

Подводя итог:

  1. создание внутренних служб с весенней загрузкой + спящий режим поверх SQL db

  2. createSwing front end, который использует эти сервисы

  3. (более поздняя стадия) мобильное приложение для использования этих сервисов

Вопросы:

  1. Это хороший подход? Я вижу это неправильно

  2. Как "разделить" POJO между бэкендом и фронтэндом? (размышление о размещении моделей в отдельной библиотеке);Я не имею в виду, как их транспортировать, я имею в виду, как повторно использовать их в обоих проектах.

Ответы [ 2 ]

2 голосов
/ 08 октября 2019

Это возможно.

  1. Я бы создал внутреннее приложение с Spring Boot и получил бы доступ к хранилищу данных с Spring DATA . Я бы сделал сервисы доступными через REST .
  2. Чтобы получить доступ к REST с вашего клиента Swing, вы должны использовать какой-нибудь клиент REST. Я бы порекомендовал Spring RestTemplate , но есть много альтернатив.

Синхронный клиент для выполнения HTTP-запросов, предоставляющий простой API метода шаблонов для базовых клиентских библиотек HTTP, таких как JDK HttpURLConnection, Apache HttpComponents и других.

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

Чтобы ответить на два вопроса:

  1. Что касается бэкенда, у вас все будет отлично, так как Spring Boot - хороший вариант. Что касается клиента, я лично не выбрал бы Swing сегодня, так как он очень старый, и я предпочитаю использовать JavaFX 2 или веб-клиент, если это возможно. Если вы являетесь единственным разработчиком и поскольку вы опытный, это может быть хорошим решением для вас.
  2. Вы можете поделиться своими POJO со своего Сервера для своего Клиента в виде API, который вы включаете в качестве зависимости. Однако обычно не рекомендуется делиться объектами POJO, а создавать их на стороне клиента или просто вводить их. В вашем случае, если это небольшой проект, это, вероятно, нормально. Делай то, что тебе легче всего.

Я бы порекомендовал начать использовать Maven в качестве инструмента для сборки, если вы этого еще не сделали.

Удачи.

1 голос
/ 08 октября 2019

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

Итак, давайте нарисуем общую картину: вы создаете бэкэнд / интерфейсный продукт / программное обеспечение.

Backend

Ваш бэкэнд будет приложением Spring, которое будет работать на сервере, скажем http://localhost:8080,, обслуживающим запросы клиентов.

ВыВозможно, вы захотите создать @RestController на http://localhost:8080/api/..., чтобы представить свои функции клиенту Swing.

Клиент Swing

Ваш клиент будетПриложение Swing, работающее на вашем рабочем столе.

Чтобы подключить ваш клиент к приложению Spring, теперь вам нужно внедрить в приложение Swing службу, которая будет вызывать ваш веб-сервер Spring и извлекать ресурсы оттуда.

Для достижения этой цели могут существовать варианты:

  1. Почему не простая Java? Используйте это учебное пособие для вызова своих сервисов Spring.

  2. Http-компоненты из Apache довольно распространены.

  3. Весной ваше приложение! Spring API включает RestTemplate , который вы можете использовать в своем приложении Swing для вызова бэкэнда Spring и получения ресурсов для вашего настольного приложения.

Как видите, это ТОЧНОто же самое, что и с веб-сайтом в React:

  • ваша веб-страница - это JFrame
  • вашими компонентами JSX в React будут ваши JPanels и компоненты
  • you 'd подключите прослушиватели действий на компонентах (JComboBox, JButton) к службе, вызывающей ваш бэкэнд Spring.
  • вы затем будете использовать ресурсы, извлеченные с сервера Spring, для обновления состояния приложения.
  • rinceи повторите

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

(Могу ли я добавить, что вы просто умнее, чем парни из JavaFX, которые сейчас сталкиваются с сегрегациейбиблиотеки javafx из ядра Java; -))

И как всегда ... счастливого кодирования!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...