I followed the examples from the books.
But let's say, my idea is to use that "boilerplate" code on other projects and not broke the DRY principle, I would rather extract that piece of code to be reusable.
While skimming over the repo, I am seeing a couple of warnings that indicate leaking abstraction/boundaries :
* there are imports for Spring in the domain code (is Spring part of your domain?)
* you are using a mock framework in some domain tests
Also I am not sure I understand the "domain" and "ddd" packages. I am a huge supporter of splitting a "domain" package from a "application" package like you did, but then not sure where the ddd stands
- KISS and YAGNI rules are broken frequently
- abuse of inheritance that makes even trivial classes harder to read
- some usage of boxed types feels incorrect, if null is meaningful it should at least have some comment
- confusing packages (like .ddd.domain vs .domain), would be nice to document what packages mean in readme