Spring Modulith 

Course & Training

Two days of intensive introduction to implementing modular monoliths with Spring Modulith. Learn how to divide Spring Boot applications into clearly delineated logical modules to gain many of the benefits of a distributed architecture without its full complexity.

Spring Modulith is a relatively new project in the Spring ecosystem that helps Spring Boot applications to be divided into clearly delineated logical modules. Instead of immediately relying on microservices, a modular monolith - a single application that is internally structured into modules - enables many of the benefits of a distributed architecture without the full complexity.

In this workshop, participants will learn how to use Spring Modulith (from version 1.3.4) in their own Spring Boot projects and how to implement modular architecture principles in practice.

We emphasize correct classification: Spring Modulith is designed as an extension for Spring Boot and requires a Spring Boot application. Basic knowledge of Spring Boot should therefore be available.

In-House Course:

We are happy to conduct tailored courses for your team - on-site, remotely or in our course rooms.

Request In-House Course

   

  Rolf Jufer  

Content:


In this workshop, participants will learn how to use Spring Modulith (from version 1.3.4) in their own Spring Boot projects and how to implement modular architecture principles in practice. We place particular emphasis on:

– The theoretical classification:
... - What are modular monoliths and why is the approach attractive?
– The internal functioning of Spring Modulith:
... - How are modules delimited?
... - How does Spring Modulith support the handling of domain events, logging and test strategies?
– The practical application:
... - Step-by-step extension of a Spring Boot application with Modulith functionalities
– A critical comparison:
... - When is a modular monolith advantageous compared to microservices and what are the limitations?

Important: As Spring Modulith was developed as an extension for Spring Boot, basic knowledge of Spring Boot is a prerequisite.

Contents and topics:

1. Basics of modular monoliths
– Definition and advantages of a modular monolith
– Architectural principles: Encapsulation, high cohesion, loose coupling
– Spring Modulith in context: How does the approach differ from classic monoliths and microservices?

2. Spring Modulith at a glance
– How it works: Recognizing modules via package structures and conventions
– Differentiation: public interfaces vs. internal implementation details
– Internal mechanisms: Use of ArchUnit to monitor module boundaries

3. Module interaction and domain events
– Implementation of event-driven communication between modules
– Publishing and receiving domain events with @ApplicationModuleListener
– Logging and tracking of event delivery

4. Practice: development of a modular monolith
– Setting up a Spring Boot project with Spring Modulith
– Definition of modules and visualization of dependencies
– Writing and executing integration tests with @ApplicationModuleTest
– Generating documentation (e.g. AsciiDoc/HTML) directly from the code

5. Microservices vs. modular monolith - reflection
– Discussion: When does which approach make sense?
– Experience reports and best practices
– Outlook: What next after the workshop?

We focus on a specific set of topics to look at and understand in detail.


Disclaimer: The actual course content may vary from the above, depending on the trainer, implementation, duration and constellation of participants.

Whether we call it training, course, workshop or seminar, we want to pick up participants at their point and equip them with the necessary practical knowledge so that they can apply the technology directly after the training and deepen it independently.

Goal:

After this workshop, participants will:

- Understand the basics and benefits of modular monoliths
- Know how Spring Modulith is defined as an extension of Spring Boot Module and how its boundaries are technically enforced
- Understand the internal workings of Spring Modulith (e.g. recognizing modules via package structures, event publishing and logging)
- Be able to implement domain events as a means of loosely coupled communication between modules
- Set up and test their own Spring Boot projects in a structured way using the Modulith approach
- Reflect on and evaluate the advantages and disadvantages of a modular monolith compared to microservices


Form:

A proven mix of explanation, live coding and practical exercises. Participants will incrementally extend a sample application with Spring Modulith and apply the various concepts in practice.


Target Audience:

The workshop is aimed at Java developers and software architects who are already familiar with Spring Boot and want to learn how to modularize their applications cleanly.

Prerequisites: Basic knowledge of Java and Spring (especially Spring Boot) is required.
Participants can expect a mixture of theory, practice (live coding and hands-on exercises) and reflection.


Requirements:

Basic knowledge of Java and Spring Boot is required. Participants should already have experience in development with Spring Boot.


Preparation:

Each participant receives a questionnaire and installation instructions after registration. Matching the answers we send individual feedback.

Request In-House Course:

In-House Kurs Anfragen

Waitinglist for public course:

Sign up for the waiting list for more public course dates. Once we have enough people on the waiting list, we will determine a date that suits everyone as much as possible and schedule a new session. If you want to participate directly with two colleagues, we can even plan a public course specifically for you.

Waiting List Request

(If you already have 3 or more participants, we will discuss your preferred date directly with you and announce the course.)

More about Spring Modulith



Spring Modulith is a project in the Spring ecosystem that supports the development of modular monoliths. It provides tools for defining, monitoring, and documenting module boundaries in Spring Boot applications.




Background


Spring Modulith was developed in 2022 by Oliver Drotbohm and the Spring team. It emerged from the realization that not every application needs to be immediately implemented as a microservices architecture, but can still benefit from clear module boundaries.


The project builds on concepts developed in Moduliths , a predecessor library that has now been incorporated into Spring Modulith. It uses ArchUnit to enforce architectural rules and boundaries.


Spring Modulith is particularly relevant for teams that want to avoid the complexity of microservices but still implement a clean, modular architecture. It offers a pragmatic middle ground between monolithic and distributed architectures and enables later migration to microservices if required.