Общие службы и репозитории Spring — лучшие практики

#java #spring

#java #spring

Вопрос:

В моей компании есть несколько проектов spring, некоторые из которых выполняют похожие / одинаковые действия. Задача состоит в том, чтобы разделить и объединить их, где это возможно. Упрощенно, существуют следующие проекты:

Ядро

  • Основной проект, делает много вещей. (Проект Spring)

общий доступ

  • Проект с общими объектами и другими общими POJO

инструмент1

  • Некоторый инструмент (Spring project)
  • Содержит дублированные / скопированные сервисы и репозитории

tool2

  • Какой-либо другой инструмент (Spring project)
  • Содержит дублированные / скопированные сервисы и репозитории

Инструменты

  • Еще один инструмент (Spring project)

План состоит в том, чтобы объединить дублированные / скопированные сервисы из core, tool1, tool2 в shared. Таким образом, все проекты имеют доступ к одним и тем же службам и репозиториям, и ничего не нужно копировать, вставлять.

Есть ли какая-либо причина не делать этого так? Может быть, это плохая практика или есть какие-либо проблемы при совместном использовании сервисов и классов репозитория? Будут ли лучшей альтернативой разные проекты для сервисов и репозиториев?

Комментарии:

1. ИМХО, это нормально, но задача будет заключаться в том, чтобы справиться с управлением версиями общего проекта в других вызывающих проектах. Что не так сложно с maven / gradle, репозиторием артефактов (nexus) и git

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

3. Проблема в том, что основной проект содержит некоторые запланированные службы. Одна из целей — запустить несколько экземпляров основного проекта (балансировка нагрузки). Эти службы расписания будут выполняться дважды, это может испортить некоторые вещи. Вот почему мы хотим перенести их в проект tools, но тогда некоторые основные службы и репозитории будут недоступны для указанных запланированных служб

4. Кроме того, различные проекты (инструмент) в настоящее время имеют скопированные сервисы и репозитории основного проекта, мы также хотим избавиться от них