附录
附录 A: Spring Modulith 配置属性
属性 | 默认值 | 描述 |
---|---|---|
|
|
是否为异步处理终止配置默认值,即等待任务完成 2 秒。有关详细信息,请参见 |
|
|
是否启用事件外部化。 |
|
|
是否初始化 JDBC 事件发布模式。 |
|
|
是否为 |
|
|
是否自动为 MongoDB 启用事务。要求数据库使用副本集运行。 |
|
|
是否在 . 上创建索引。 |
|
|
是否为 |
|
|
是否启用 |
|
|
要发布的事件的粒度。( |
|
|
确定周边界时要使用的 |
|
|
正在发布的事件的日期的时间区域。 |
|
|
是否在应用程序重新启动时重新发布未完成的事件发布。 |
附录 B:Spring Modulith 模块
启动器 | 典型范围 | 包括 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
模块 | 典型范围 | 描述 |
---|---|---|
|
|
一个 Spring Boot Actuator,用于通过 Actuator 公开应用程序模块结构。 |
|
|
在生产代码中使用的抽象,用于自定义 Spring Modulith 的默认行为。 |
|
|
核心应用程序模块模型和 API。 |
|
|
|
|
|
AMQP 的事件外部化支持。 |
|
|
API 用于自定义 Spring Modulith 的事件功能。 |
|
|
事件发布注册表的核心实现,以及集成抽象 |
|
|
|
|
|
|
|
|
JMS 的事件外部化支持。 |
|
|
|
|
|
Kafka 的事件外部化支持。 |
|
|
|
|
|
此处描述的时间流逝事件实现 这里。 |
|
|
支持在运行时引导 |
|
|
此处描述的可观察性基础设施 这里。 |
附录 C:事件发布注册表模式
基于 JDBC 的事件发布注册表支持需要数据库中存在以下数据库模式。如果您希望 Spring Modulith 为您创建模式,请将应用程序属性 spring.modulith.events.jdbc-schema-initialization.enabled
设置为 true
。
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)
);
CREATE INDEX IF NOT EXISTS EVENT_PUBLICATION_BY_LISTENER_ID_AND_SERIALIZED_EVENT_IDX ON EVENT_PUBLICATION (LISTENER_ID, SERIALIZED_EVENT);
CREATE INDEX IF NOT EXISTS EVENT_PUBLICATION_BY_COMPLETION_DATE_IDX ON EVENT_PUBLICATION (COMPLETION_DATE);
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)
);
CREATE INDEX IF NOT EXISTS EVENT_PUBLICATION_BY_LISTENER_ID_AND_SERIALIZED_EVENT_IDX ON EVENT_PUBLICATION (LISTENER_ID, SERIALIZED_EVENT);
CREATE INDEX IF NOT EXISTS EVENT_PUBLICATION_BY_COMPLETION_DATE_IDX ON EVENT_PUBLICATION (COMPLETION_DATE);
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),
INDEX EVENT_PUBLICATION_BY_COMPLETION_DATE_IDX (COMPLETION_DATE)
);
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)
);
CREATE INDEX IF NOT EXISTS event_publication_serialized_event_hash_idx ON event_publication USING hash(serialized_event);
CREATE INDEX IF NOT EXISTS event_publication_by_completion_date_idx ON event_publication (completion_date);
附录 D:从 Moduliths 迁移
-
o.m.model.Modules
已重命名为o.s.m.model.ApplicationModules
-
o.m.model.ModuleDetectionStrategy
已重命名为o.s.m.model.ApplicationModuleDetectionStrategy
-
@o.m.test.ModuleTest
已重命名为@o.s.m.test.ApplicationModuleTest
-
o.m.docs.Documenter.Options
已重命名为o.s.m.docs.Documenter.DiagramOptions
-
组件图的图表样式现在默认设置为
DiagramStyle.C4
(通过调用DiagramOptions.withStyle(DiagramStyle.UML)
覆盖) -
模块画布默认隐藏未公开的类型。要在画布中包含应用程序模块内部类型,请将
CanvasOptions
配置为….revealInternals()
。 -
组件图和应用程序模块画布的输出文件夹已从
moduliths-docs
移动到构建的 target 文件夹中的spring-modulith-docs
(例如,Maven 的target
)。