Spring Modulith 2.0 implementation for bounded contexts in Spring Boot 4. Use when structuring application modules, implementing @ApplicationModuleListener for event-driven communication, testing with Scenario API, enforcing module boundaries, or externalizing events to Kafka/AMQP. For modular monolith architecture decisions, see the domain-driven-design skill.
View on GitHubjoaquimscosta/arkhe-claude-plugins
spring-boot
January 23, 2026
Select agents to install to:
npx add-skill https://github.com/joaquimscosta/arkhe-claude-plugins/blob/main/plugins/spring-boot/skills/spring-boot-modulith/SKILL.md -a claude-code --skill spring-boot-modulithInstallation paths:
.claude/skills/spring-boot-modulith/# Spring Modulith for Bounded Contexts Implements DDD bounded contexts as application modules with enforced boundaries and event-driven communication. ## Core Concepts | Concept | Description | |---------|-------------| | **Application Module** | Package-based boundary = bounded context | | **Module API** | Types in base package (public) | | **Internal** | Types in sub-packages (encapsulated) | | **Events** | Cross-module communication mechanism | ## Module Structure ``` src/main/java/ ├── com.example/ │ └── Application.java ← @SpringBootApplication ├── com.example.order/ ← Module: order │ ├── OrderService.java ← Public API │ ├── OrderCreated.java ← Public event │ ├── package-info.java ← @ApplicationModule config │ └── internal/ ← Encapsulated │ ├── OrderRepository.java │ └── OrderEntity.java ├── com.example.inventory/ ← Module: inventory │ ├── InventoryService.java │ └── internal/ └── com.example.shipping/ ← Module: shipping ``` Types in `com.example.order` = public API Types in `com.example.order.internal` = hidden from other modules ## Quick Patterns See [EXAMPLES.md](EXAMPLES.md) for complete working examples including: - **Module Configuration** with @ApplicationModule - **Event Publishing** with domain event records - **Event Handling** with @ApplicationModuleListener (Java + Kotlin) - **Module Verification Test** with PlantUML generation - **Event Externalization** for Kafka/AMQP ## Spring Boot 4 / Modulith 2.0 Specifics - **@ApplicationModuleListener** combines `@Async` + `@Transactional(REQUIRES_NEW)` + `@TransactionalEventListener(AFTER_COMMIT)` - **Event Externalization** with `@Externalized` annotation for Kafka/AMQP - **JDBC event log** ensures at-least-once delivery ## Detailed References - **Examples**: See [EXAMPLES.md](EXAMPLES.md) for complete working code examples - **Troubleshooting**: See [TROUBLESHOOTI