Talk to an Instructor:
Jonas Felix
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.
We are happy to conduct tailored courses for your team - on-site, remotely or in our course rooms.
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.
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
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.
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.
Basic knowledge of Java and Spring Boot is required. Participants should already have experience in development with Spring Boot.
Each participant receives a questionnaire and installation instructions after registration. Matching the answers we send individual feedback.
Thank you for your request, we will get back to you as soon as possible.
Unexpected error - please contact us by E-Mail or Phone.
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.
Thank you for your request, we will get back to you as soon as possible.
Unexpected error - please contact us by E-Mail or Phone.
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.
Talk to an Instructor:
Jonas Felix
Training-Centers:
Basel:
- Aeschenplatz 6, 4052 Basel
Zurich:
- HWZ, Lagerstrasse 5, 8004 Zürich
Company address:
felixideas GmbH
Baslerstrasse 5a
4102 Binningen