#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. Кроме того, различные проекты (инструмент) в настоящее время имеют скопированные сервисы и репозитории основного проекта, мы также хотим избавиться от них