DDD - Огранизация проекта java 9 модулей - PullRequest
0 голосов
/ 31 октября 2019

Я пытаюсь организовать проект DDD, используя шестиугольную архитектуру в java 9 (используя модули maven). Есть ли где-нибудь рабочий пример, который уже используется в производственных системах? Итак, пока у меня есть только некоторая идея, как это сделать:

Здесь у меня есть domain модуль, который имеет все команды, события, модель домена (с агрегатами, сущностями и объектами значений), а также интерфейсы репозитория + доменсервисные интерфейсы (если ретрансляция на инфраструктуру) и реализации. Другой модуль application содержит службы приложений, в которых у меня есть «сценарии использования» приложения (простые методы, которые управляют загрузкой агрегатов и т. Д.).

А что насчет этих адаптеров в шестнадцатеричной архитектуре? Должен ли каждый адаптер быть разделен в модуле (например, mysql-adapter, где я мог бы реализовать репозитории, которые полагаются на инфраструктуру? Кроме того, имея отдельный модуль для агрегата rabbitmq?

Любые примеры по этому поводу были бы великолепны!

enter image description here

1 Ответ

0 голосов
/ 31 октября 2019

Я пишу пример гексагональной архитектуры с java 9 и maven. Все еще не закончено, я опубликую его, когда это будет сделано.

Но пока я могу рассказать вам о моем подходе:

  • Один модуль для шестиугольника (для него не требуется никакого другого модуля)). Для каждого порта у меня есть пакет, который экспортирует модуль.

  • Один модуль для каждого адаптера. Требуется шестигранный модуль.

  • Один модуль для основного. Требуется шестигранник и все адаптеры модулей. Никакой другой модуль не требует основного модуля. Он строит всю систему и запускает драйверные адаптеры.

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


Не знаюВ этом примере я не могу использовать DDD, но если бы я использовал его, структура была бы такой:

  • Шестиугольник был бы модулем агрегатора (без исходного кода), просто с 2 требуется переход к приложениюмодуль и модуль домена.

  • Для модуля приложения требуется модуль домена. Он экспортирует пакеты, которые являются портами драйвера (варианты использования) и, возможно, также управляемыми портами (реализованными с помощью управляемых адаптеров.

  • Домен не требует модуля. Он экспортирует пакеты, которые являются управляемыми портами.


Я рекомендую книгу Сандера Марка и Пола Баккера "Модульность Java 9".

Я опубликую статью на

https://softwarecampament.wordpress.com/portsadapters/

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

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