DDDLib
DDDLib — это библиотека для разработки на основе доменно-ориентированного подхода (Domain Driven Design, DDD). Её цель:
- предоставить базовые интерфейсы и абстракции для DDD-разработки, обеспечивая согласованность;
- разделить бизнес-код и технический код;
- изолировать бизнес-код от зависимостей от IoC-контейнеров и фреймворков персистентности;
- облегчить работу разработчиков, снизив «концептуальную нагрузку».
Большинство разработчиков должны понимать только модуль dddlib-domain и несколько классов в нём: Entity, EntityRepository, InstanceFactory и четыре вида объектов запросов.
Также библиотека предоставляет инструменты, часто используемые в программировании, такие как импорт и экспорт данных из Excel, системная конфигурация и инкапсуляция механизма правил.
Структура модулей
DDDLib представляет собой многомодульный проект Maven с более чем десятью модулями, которые можно разделить на три категории: основные модули, модули IoC и модули персистентности. Пользователи проекта должны напрямую зависеть от основного модуля при кодировании и выбирать модуль IoC и модуль персистентности при развёртывании.
Основные модули включают:
- dddlib-domain — ядро DDDLib. Используется как зависимость времени компиляции в пользовательских проектах.
Модули IoC включают:
- dddlib-ioc-spring — инкапсулирует Spring IoC контейнер и предоставляет возможности внедрения зависимостей. Используется как необязательная зависимость времени выполнения в пользовательских проектах;
- dddlib-ioc-guice — инкапсулирует Google Guice IoC контейнер и обеспечивает внедрение зависимостей. Используется как дополнительная зависимость времени выполнения в пользовательских проектах;
- dddlib-ioc-tapestry — инкапсулирует TapestryIoC контейнер и предлагает возможности внедрения зависимостей. Используется как дополнительная зависимость времени выполнения в пользовательских проектах.
Модули персистентности включают:
- dddlib-persistence — модуль персистентности, содержащий следующие подмодули:
- dddlib-persistence-jpa — использует JPA в качестве технологии персистентности и предоставляет функции сохранения. Используется как дополнительная зависимость времени выполнения в пользовательских проектах;
- dddlib-persistence-hibernate — использует Hibernate в качестве технологии персистентности и обеспечивает сохранение данных. Используется как дополнительная зависимость времени выполнения в пользовательских проектах;
- dddlib-persistence-test — тестовый модуль для поддержки других модулей персистентности.
Другие модули:
- dddlib-query-channel — модуль канала запросов, предоставляющий расширенные функции для постраничного запроса. Если проект нуждается в этой функции, модуль должен быть добавлен как зависимость времени компиляции;
- dddlib-utils — модуль общих инструментов, предлагающий различные удобные инструменты для работы с JavaBeans, массивами, коллекциями, датами, журналами и т. д. Наиболее важным классом является класс утверждений Assert, который позволяет использовать защитное программирование для повышения надёжности и устойчивости системы. Этот модуль зависит от dddlib-domain, поэтому пользовательские проекты имеют зависимость времени компиляции от него;
- dddlib-configuration — предоставляет унифицированный интерфейс и реализацию для чтения конфигурационной информации из различных источников, таких как файлы файловой системы, файлы пути к классам, базы данных и удалённые URL. За исключением реализации в форме URL, которая доступна только для чтения, другие реализации доступны для чтения и записи, позволяя записывать изменённые данные конфигурации обратно в их источник;
- dddlib-cache — модуль кеширования, обеспечивающий поддержку кеша для пользовательских систем. В настоящее время используется реализация memcached, планируется разделение на общий API-модуль и несколько реализаций модулей, использующих различные технологии кеширования;
- dddlib-datasource-monitor — модуль мониторинга источника данных, отслеживающий состояние работы источника данных;
- dddlib-datasource-router — модуль маршрутизации источника данных, предназначенный для SaaS-приложений, маршрутизирующий доступ к базам данных разных арендаторов на разные серверы или базы данных. Модуль оптимизирован для MySQL и дополнительно реализует разделение чтения и записи;
- dddlib-datasource-saas — новая версия модуля источника данных SaaS, маршрутизирующая доступ к базам данных различных арендаторов в их собственные базы данных. Поддерживает различные стратегии маршрутизации, такие как арендаторы с разными IP-адресами, портами, именами баз данных, экземплярами и JNDI;
- ddblib-db — предоставляет специализированные инструменты для доступа к базе данных, включая менеджер транзакций BTM, DBUnit, менеджеры баз данных MySQL и Oracle и т.д. Основной целью является поддержка интеграционного тестирования баз данных;
- dddlib-excel — обеспечивает поддержку чтения и записи содержимого файлов Excel с использованием технологии Apache POI и поддерживает форматы Excel .xls и .xlsx;
- dddlib-i18n — обеспечивает поддержку интернационализации и локализации;
- dddlib-observer — реализует паттерн наблюдателя на уровне сущностей, уведомляя зарегистрированных наблюдателей-сущностей о событиях, происходящих в сущности;
- dddlib-rule-engine — предоставляет интерфейсы и реализации для сервисов с состоянием и без состояния на основе спецификации движка правил jsr94.
Для получения подробной информации о каждом подмодуле рекомендуется обратиться к файлу README.md соответствующего модуля.
Комментарии ( 0 )