Весна: как делиться сервисами в разных приложениях - PullRequest
2 голосов
/ 09 августа 2011

В настоящее время мы разрабатываем многофункциональное приложение с использованием Eclipse на стороне клиента и Spring Framework на стороне сервера.

Моя задача состоит в том, чтобы сократить усилия по внедрению за счет совместного использования одних и тех же бизнес-функций (служб) в разных приложениях.Эти бизнес-функции (например, служба регистрации / проверки в контексте управления документами) могут иметь разные характеристики (например, сама регистрация одинакова, но в одном приложении файл после удаления возвращается, другое приложение ничего не делает).В этом случае я мог бы скопировать и вставить весь код и адаптировать его к новым требованиям, или я найду другое хорошее решение (например, повторное использование кода с обратными вызовами и т. Д.) Для сокращения усилий по поиску и локализации.

Делаете ли выесть опыт в таких сценариях?Предоставляет ли Spring какие-либо решения для такого подхода с несколькими приложениями на одной платформе?

1 Ответ

0 голосов
/ 09 августа 2011

Конечно, фактически Spring (IoC в целом) создан для таких решений.Сначала технический шаг: извлеките сервисы, которые предполагается разделить в библиотеку, которую вы можете перенести в разные проекты.

Теперь самое интересное: если некоторые части логики отличаются, а другие остаются прежними, используйтевнедрение зависимостей и стратегия шаблон!

@Service
public class CheckInService {

  @Resource
  private CheckInCleanup checkInCleanup;

  public void checkIn(Doc doc) {
    //...
    checkInCleanup.checkIn(doc)
  }
}

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

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

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