Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/odrotbohm/tactical-ddd-workshop

Sample code for my Tactical DDD with Java workshop
https://github.com/odrotbohm/tactical-ddd-workshop

ddd jmolecules moduliths spring-boot

Last synced: 3 months ago
JSON representation

Sample code for my Tactical DDD with Java workshop

Awesome Lists containing this project

README

        

= Tactical DDD with Java

This repository contains sample code for my "Tactical DDD with Java" workshop.
It consists of 4 modules that showcase different aspects of how to write architecturally evident code with jMolecules and structure applications with Moduliths.

== 1. DDD Building Blocks and structural validation

Showcases…

* … how using jMolecules DDD abstractions in a domain model allow to verify rules originating from the concepts expressed via https://github.com/xmolecules/jmolecules-integrations/tree/main/jmolecules-archunit[jMolecules ArchUnit integration].

== 2. Out of the box port integration for jMolecules types

Showcases…

* … value types and identifiers working as their primitive values in JSON representations using https://github.com/xmolecules/jmolecules-integrations/tree/main/jmolecules-jackson[jMolecules Jackson integration].

== 3. Reducing boilerplate code for persistent models

Showcases…

* … the use of https://github.com/xmolecules/jmolecules-integrations/tree/main/jmolecules-bytebuddy[jMolecules' ByteBuddy plugin] to default the JPA mappings to follow the aggregate structure expressed in the model.

== 4. Building low-coupled modules using https://github.com/spring-projects-experimental/spring-modulith[Spring Modulith]

Showcases…

* … the package convention to define logical modules.
* … strictly models cross-aggregate references as jMolecules ``Association``s.
* … using domain events to implement interaction between modules and avoid bean references across module boundaries.
* … implementing tests that verify business functionality around the published and consumed events.
* … the use of Spring Modulith's `Documenter` to create documentation around the module structure, relevant components of each module and their interaction.