9. Appendix
Appendix A: Spring Modulith Configuration Properties
Property | Default value | Description |
---|---|---|
|
|
Whether to configure defaults for the async processing termination, namely to wait for task completion for 2 seconds. See |
|
|
Whether to initialize the JDBC event publication schema. |
|
|
Whether to automatically enable transactions for MongoDB. Requires the database to be run with a replica set. |
|
|
Whether to enable the |
|
|
The granularity of events to publish. ( |
|
|
The |
|
|
The timezone of the dates for the events being published. |
|
|
Whether to republish outstanding event publications on restarts of the application. |
Appendix B: Spring Modulith modules
Starter | Typical scope | Includes |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Module | Typical scope | Description |
---|---|---|
|
|
A Spring Boot actuator to expose the application module structure via an actuator. |
|
|
The abstractions to be used in your production code to customize Spring Modulith’s default behavior. |
|
|
The core application module model and API. |
|
|
The |
|
|
The core implementation of the event publication registry as well as the integration abstractions |
|
|
A Jackson-based implementation of the |
|
|
A JDBC-based implementation of the |
|
|
A JPA-based implementation of the |
|
|
A MongoDB-based implementation of the |
|
|
The Passage of Time events implementation described here. |
|
|
Support to bootstrap an |
|
|
Observability infrastructure described here. |
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
.
9.C.1. 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)
)
9.C.2. 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)
)
9.C.3. 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)
)
Appendix D: Migrating from Moduliths
-
o.m.model.Modules
has been renamed too.s.m.model.ApplicationModules
-
o.m.model.ModuleDetectionStrategy
has been renamed too.s.m.model.ApplicationModuleDetectionStrategy
-
@o.m.test.ModuleTest
has been renamed to@o.s.m.test.ApplicationModuleTest
-
o.m.docs.Documenter.Options
has been renamed too.s.m.docs.Documenter.DiagramOptions
-
The diagram style of component diagrams now defaults to
DiagramStyle.C4
(override by callingDiagramOptions.withStyle(DiagramStyle.UML)
) -
The module canvas hides non exposed types by default. To include application-module-internal types in the canvas, configure
CanvasOptions
to….revealInternals()
. -
The output folder for component diagrams and application module canvases has moved from
moduliths-docs
tospring-modulith-docs
located in your build’s target folder (such astarget
for Maven).