This version is still in development and is not considered stable yet. For the latest stable version, please use Spring Modulith 1.3.0!spring-doc.cn

Appendix

Appendix A: Spring Modulith Configuration Properties

Property Default value Description

spring.modulith.default-async-terminationspring-doc.cn

truespring-doc.cn

Whether to configure defaults for the async processing termination, namely to wait for task completion for 2 seconds. See TaskExecutionProperties for details.spring-doc.cn

spring.modulith.events.externalization.enabledspring-doc.cn

truespring-doc.cn

Whether to enable event externalization.spring-doc.cn

spring.modulith.events.jdbc.schema-initialization.enabledspring-doc.cn

falsespring-doc.cn

Whether to initialize the JDBC event publication schema.spring-doc.cn

spring.modulith.events.kafka.enable-jsonspring-doc.cn

truespring-doc.cn

Whether to enable JSON support for KafkaTemplate.spring-doc.cn

spring.modulith.events.mongodb.transaction-management.enabledspring-doc.cn

truespring-doc.cn

Whether to automatically enable transactions for MongoDB. Requires the database to be run with a replica set.spring-doc.cn

spring.modulith.events.neo4j.event-index.enabledspring-doc.cn

falsespring-doc.cn

Whether to create indexes on the .spring-doc.cn

spring.modulith.events.rabbitmq.enable-jsonspring-doc.cn

truespring-doc.cn

Whether to enable JSON support for RabbitTemplate.spring-doc.cn

spring.modulith.moments.enableTimeMachinespring-doc.cn

falsespring-doc.cn

Whether to enable the TimeMachine.spring-doc.cn

spring.modulith.moments.granularityspring-doc.cn

HOURSspring-doc.cn

The granularity of events to publish. (HOURS, DAYS)spring-doc.cn

spring.modulith.moments.localespring-doc.cn

Locale.getDefault()spring-doc.cn

The Locale to use when determining week boundaries.spring-doc.cn

spring.modulith.moments.zoneIdspring-doc.cn

ZoneOffset.UTCspring-doc.cn

The timezone of the dates for the events being published.spring-doc.cn

spring.modulith.republish-outstanding-events-on-restartspring-doc.cn

falsespring-doc.cn

Whether to republish outstanding event publications on restarts of the application. Usually not recommended in multi-instance deployments as other instances might still be processing events.spring-doc.cn

Appendix B: Spring Modulith modules

Table 1. Spring Modulith starter POMs
Starter Typical scope Includes

spring-modulith-starter-corespring-doc.cn

compilespring-doc.cn

spring-modulith-starter-insightspring-doc.cn

runtimespring-doc.cn

spring-modulith-starter-jdbcspring-doc.cn

compilespring-doc.cn

spring-modulith-starter-jpaspring-doc.cn

compilespring-doc.cn

spring-modulith-starter-mongodbspring-doc.cn

compilespring-doc.cn

spring-modulith-starter-neo4jspring-doc.cn

compilespring-doc.cn

spring-modulith-starter-testspring-doc.cn

testspring-doc.cn

Table 2. Individual Spring Modulith JARs
Module Typical scope Description

spring-modulith-actuatorspring-doc.cn

runtimespring-doc.cn

A Spring Boot actuator to expose the application module structure via an actuator.spring-doc.cn

spring-modulith-apispring-doc.cn

compilespring-doc.cn

The abstractions to be used in your production code to customize Spring Modulith’s default behavior.spring-doc.cn

spring-modulith-corespring-doc.cn

runtimespring-doc.cn

The core application module model and API.spring-doc.cn

spring-modulith-docsspring-doc.cn

testspring-doc.cn

The Documenter API to create Asciidoctor and PlantUML documentation from the module model.spring-doc.cn

spring-modulith-events-amqpspring-doc.cn

runtimespring-doc.cn

Event externalization support for AMQP.spring-doc.cn

spring-modulith-events-apispring-doc.cn

runtimespring-doc.cn

API to customize the event features of Spring Modulith.spring-doc.cn

spring-modulith-events-corespring-doc.cn

runtimespring-doc.cn

The core implementation of the event publication registry as well as the integration abstractions EventPublicationRegistry and EventPublicationSerializer.spring-doc.cn

spring-modulith-events-jacksonspring-doc.cn

runtimespring-doc.cn

A Jackson-based implementation of the EventPublicationSerializer.spring-doc.cn

spring-modulith-events-jdbcspring-doc.cn

runtimespring-doc.cn

A JDBC-based implementation of the EventPublicationRegistry.spring-doc.cn

spring-modulith-events-jmsspring-doc.cn

runtimespring-doc.cn

Event externalization support for JMS.spring-doc.cn

spring-modulith-events-jpaspring-doc.cn

runtimespring-doc.cn

A JPA-based implementation of the EventPublicationRegistry.spring-doc.cn

spring-modulith-events-kafkaspring-doc.cn

runtimespring-doc.cn

Event externalization support for Kafka.spring-doc.cn

spring-modulith-events-mongodbspring-doc.cn

runtimespring-doc.cn

A MongoDB-based implementation of the EventPublicationRegistry.spring-doc.cn

spring-modulith-events-neo4jspring-doc.cn

runtimespring-doc.cn

A Neo4j-based implementation of the EventPublicationRegistry.spring-doc.cn

spring-modulith-junitspring-doc.cn

testspring-doc.cn

Test execution optimizations based on the application module structure. Find more details here.spring-doc.cn

spring-modulith-momentsspring-doc.cn

compilespring-doc.cn

The Passage of Time events implementation described here.spring-doc.cn

spring-modulith-observabilityspring-doc.cn

runtimespring-doc.cn

Observability infrastructure described here.spring-doc.cn

spring-modulith-runtimespring-doc.cn

runtimespring-doc.cn

Support to bootstrap an ApplicationModules instance at runtime. Usually not directly depended on but transitively used by spring-modulith-actuator and spring-modulith-observability.spring-doc.cn

spring-modulith-testspring-doc.cn

testspring-doc.cn

Integration testing support. Find more details here.spring-doc.cn

Appendix C: Event publication registry schemas

The JDBC-based event publication registry support expects the following database schemas to be present in the database. If you would like Spring Modulith to create the schema for you, set the application property spring.modulith.events.jdbc-schema-initialization.enabled to true.spring-doc.cn

H2

CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION
(
  ID               UUID NOT NULL,
  COMPLETION_DATE  TIMESTAMP(9) WITH TIME ZONE,
  EVENT_TYPE       VARCHAR(512) NOT NULL,
  LISTENER_ID      VARCHAR(512) NOT NULL,
  PUBLICATION_DATE TIMESTAMP(9) WITH TIME ZONE NOT NULL,
  SERIALIZED_EVENT VARCHAR(4000) NOT NULL,
  PRIMARY KEY (ID)
)

HSQLDB

CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION
(
  ID               UUID NOT NULL,
  COMPLETION_DATE  TIMESTAMP(9),
  EVENT_TYPE       VARCHAR(512) NOT NULL,
  LISTENER_ID      VARCHAR(512) NOT NULL,
  PUBLICATION_DATE TIMESTAMP(9) NOT NULL,
  SERIALIZED_EVENT VARCHAR(4000) NOT NULL,
  PRIMARY KEY (ID)
)

MySQL

CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION
(
  ID               VARCHAR(36) NOT NULL,
  LISTENER_ID      VARCHAR(512) NOT NULL,
  EVENT_TYPE       VARCHAR(512) NOT NULL,
  SERIALIZED_EVENT VARCHAR(4000) NOT NULL,
  PUBLICATION_DATE TIMESTAMP(6) NOT NULL,
  COMPLETION_DATE  TIMESTAMP(6) DEFAULT NULL NULL,
  PRIMARY KEY (ID)
)

PostgreSQL

CREATE TABLE IF NOT EXISTS event_publication
(
  id               UUID NOT NULL,
  listener_id      TEXT NOT NULL,
  event_type       TEXT NOT NULL,
  serialized_event TEXT NOT NULL,
  publication_date TIMESTAMP WITH TIME ZONE NOT NULL,
  completion_date  TIMESTAMP WITH TIME ZONE,
  PRIMARY KEY (id)
)

Appendix D: Migrating from Moduliths

  • o.m.model.Modules has been renamed to o.s.m.model.ApplicationModulesspring-doc.cn

  • o.m.model.ModuleDetectionStrategy has been renamed to o.s.m.model.ApplicationModuleDetectionStrategyspring-doc.cn

  • @o.m.test.ModuleTest has been renamed to @o.s.m.test.ApplicationModuleTestspring-doc.cn

  • o.m.docs.Documenter.Options has been renamed to o.s.m.docs.Documenter.DiagramOptionsspring-doc.cn

  • The diagram style of component diagrams now defaults to DiagramStyle.C4 (override by calling DiagramOptions.withStyle(DiagramStyle.UML))spring-doc.cn

  • The module canvas hides non exposed types by default. To include application-module-internal types in the canvas, configure CanvasOptions to ….revealInternals().spring-doc.cn

  • The output folder for component diagrams and application module canvases has moved from moduliths-docs to spring-modulith-docs located in your build’s target folder (such as target for Maven).spring-doc.cn