Return to site

🍃☕ SPRING MODULITH 2.2 M1: modular monoliths move to BOOT 4.2

Keep the monolith. Make its boundaries executable.

· spring

🔸 TLDR

Spring Modulith helps turn a Spring Boot monolith into explicit, domain-driven modules whose boundaries can be verified, tested, observed and documented.

2.2 M1 moves to Spring Boot 4.2 M1 + Spring Framework 7.1 M1, while improving events, testing and auto-configuration.

Section image

🔸WHAT IS SPRING MODULITH?

A modular monolith keeps one deployable application while organizing the code into business-oriented modules.

Instead of hoping developers respect package boundaries, Spring Modulith can inspect and enforce them.

Think:

▪️ one application

▪️ multiple domain modules

▪️ explicit dependencies

▪️ architecture tests

▪️ module-focused integration tests

▪️ events between modules

You keep the operational simplicity of a monolith without accepting a giant ball of mud. 🧱

1️⃣ DECLARE MODULE DEPENDENCIES

@org.springframework.modulith.ApplicationModule(
    allowedDependencies = "inventory"
)
package example.order;

The order module explicitly declares what it may depend on. This turns architectural intent into a rule the codebase can verify instead of leaving it buried in a diagram or README.

#ModularArchitecture

2️⃣ VERIFY THE ARCHITECTURE

@Test
void verifyModules() {

    ApplicationModules
        .of(Application.class)
        .verify();
}

verify() checks the module model for problems such as dependency cycles, access to another module's internals and violations of explicitly allowed dependencies.

Architecture becomes executable. ✅

#ArchitectureTesting

3️⃣ TEST ONE MODULE

@ApplicationModuleTest
class OrderModuleTests {

    @Test
    void createsOrder() {
        // test the order module
    }
}

@ApplicationModuleTest boots the application around the module being tested instead of treating the entire application as one inseparable unit.

Smaller boundary. More focused integration test. 🎯

#SpringTesting

Section image

https://javafullstack2027.mystrikingly.com

🔸 WHY THIS MATTERS

Microservices are not the only way to create boundaries.

Spring Modulith gives you many of the architectural benefits first:

▪️ domain-oriented decomposition

▪️ controlled dependencies

▪️ event-driven collaboration

▪️ architectural verification

▪️ module-level observability

▪️ generated architecture documentation

...without immediately paying the distributed-system tax. 💸

🔸 6️⃣ WHAT'S NEW IN SPRING MODULITH 2.2 M1?

The first milestone of 2.2 mainly modernizes the platform underneath Modulith.

🚀 Platform alignment

▪️ Spring Boot 4.2 M1

▪️ Spring Framework 7.1 M1

▪️ ArchUnit 1.5.0

▪️ Micrometer Tracing 1.7.1

📨 Events & Outbox

▪️ Namastack Outbox 1.8.1

▪️ improved Namastack version management

▪️ event externalization ClassCastException fix

⚙️ Auto-configuration

▪️ modernized registration for moments, events and observability modules

▪️ Jackson 2 configuration conflict fixed

🧪 Testing

▪️ fresh SQL Testcontainers are now ensured

▪️ JUnit parallel execution issue fixed

▪️ root-module Flyway migration test issue fixed

▪️ MongoDB publication tests correctly use Testcontainers

Spring Modulith 2.2 M1 is a milestone, so it is more interesting as a preview of the next generation than as the version you blindly drop into production.

🔸 DEMO REPOSITORY

I built a Spring Modulith 2.2 M1 demo with order and inventory modules, H2, module dependency rules, verifyModules() architecture checks and @ApplicationModuleTest with createsOrder().

A small repo to see the concepts running, not just diagrammed.

🔸 TAKEAWAYS

▪️ Modulith ≠ microservices inside one JVM.

▪️ Its real value is making module boundaries explicit and enforceable.

▪️ ApplicationModules.verify() turns architecture into a testable constraint.

▪️ @ApplicationModuleTest gives integration testing a domain-module boundary.

▪️ 2.2 M1 aligns that model with the upcoming Spring Boot 4.2 / Framework 7.1 generation.

A well-designed monolith is not the architecture you failed to split.

Sometimes, it is the architecture you deliberately chose. 🧩

#Java #Spring #SpringBoot #SpringModulith #ModularMonolith #SoftwareArchitecture #DDD #DomainDrivenDesign #Architecture #Microservices #Testing #JavaDeveloper

Go further with Java certification:

Java👇

Spring👇

SpringBook👇

JavaFullstackBook👇