Skip to main content

1: Workshop Intro

Welcome to the Clean Hexagonal Onion with a Dash of DDD in Spring workshop at J-Spring 2025. My name is Maik Kingma, and I will be your coach for today. Since I cannot be with everyone simultaneously, these docs will provide you with a step-by-step guide.

Getting Help

I will do my best to answer all the questions. We will have a few sync moments throughout the workshop, where we can discuss questions together. Keep validating your work after every chapter. In case you get stuck somewhere along the way, you can always continue the workshop on a code base snapshot from one of the prepared branches that provide you the solution of each chapter.

Time management

There are 7 implementation chapters in total. They become increasingly complex. Today we only have 2 hours, let's see how far we get. The workshop will remain online so you can continue at home as well. At the end of each section, there is a git branch reference with which you can continue to the next chapter, in case you got stuck.

Example:

if (allTestsGreen == true) {
log.info("DONE! Let's move on to the next topic: XXX")}
else{
log.error("Shout for help!") || (git stash && git checkout 5-persist-author-data-done)
}

What you will need

  • JDK 17
  • Maven (optional)
  • Docker Desktop
  • An IDE of your choice (ideally IntelliJ)
  • an Internet connection

TDD

If you want there is the possibility to do Test Driven Development. At the end of each chapter you will find a happy flow unit test, in some cases also an integration test. You can use these to do TDD. If you want an even more guided approach, I prepared TDD branches for each chapter in the repository. Ideally, only use those if you are entirely stuck.

Side note

The purpose of this workshop is to get to know the Clean Hexagonal Onion pattern and how to apply it in combination with some DDD in a Spring Boot application. I do not intend to have full test coverage in this project. Instead, the provided unit-tests usually only test the happy flow, paired with an occasional integration test or two.