此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Modulith 1.3.0! |
附录
附录 A:Spring 模数配置属性
财产 | 默认值 | 描述 |
---|---|---|
|
|
是否为异步处理终止配置默认值,即等待任务完成 2 秒。有关详细信息,请参阅。 |
|
没有 |
用于检测应用程序模块的策略。
可以是 or 的自定义实现的类名(如果未配置任何内容,这也是最终回退),也可以只选择显式注释为 或 jMolecules' 的包。有关详细信息,请参阅自定义应用程序模块检测。 |
|
|
是否开启事件外部化。 |
|
|
是否初始化 JDBC 事件发布架构。 |
|
|
是否为 . |
|
|
是否自动为 MongoDB 启用事务。要求使用副本集运行数据库。 |
|
|
是否在 . |
|
|
是否为 . |
|
|
是否启用 |
|
|
要发布的事件的粒度。(, |
|
|
确定周边界时使用的。 |
|
|
要发布的事件的日期的时区。 |
|
|
是否在应用程序重新启动时重新发布未完成的事件发布。 通常不建议在多实例部署中使用,因为其他实例可能仍在处理事件。 |
附录 B:Spring Modulith 模块
起动机 | 典型范围 | 包括 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
模块 | 典型范围 | 描述 |
---|---|---|
|
|
一个 Spring Boot 执行器,用于通过 Actuator 公开应用程序模块结构。 |
|
|
要在 生产代码中用于自定义 Spring Modulith 的默认行为的抽象。 |
|
|
核心应用程序模块模型和 API。 |
|
|
用于从模块模型创建 Asciidoctor 和 PlantUML 文档的 API。 |
|
|
对 AMQP 的事件外部化支持。 |
|
|
用于自定义 Spring Modulith 事件功能的 API。 |
|
|
事件发布注册表的核心实现以及集成抽象和 . |
|
|
基于 Jackson 的 . |
|
|
基于 JDBC 的 . |
|
|
JMS 的事件外部化支持。 |
|
|
基于 JPA 的 . |
|
|
Kafka 的事件外部化支持。 |
|
|
基于 MongoDB 的 . |
|
|
基于 Neo4j 的 . |
|
|
基于应用程序模块结构的测试执行优化。在此处查找更多详细信息。 |
|
|
此处介绍了 Passage of Time 事件实现。 |
|
|
可观测性基础设施。 |
|
|
支持在运行时引导实例。通常不直接依赖,而是传递由 和 使用。 |
|
|
集成测试支持。在此处查找更多详细信息。 |
附录 C:事件发布注册表架构
基于 JDBC 的事件发布注册表支持要求数据库中存在以下数据库架构。
如果您希望 Spring Modulith 为您创建架构,请将 application 属性设置为 。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 (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
-
组件图的图表样式现在默认为 (override by calling
DiagramStyle.C4
DiagramOptions.withStyle(DiagramStyle.UML)
) -
默认情况下,模块 canvas 会隐藏未公开的类型。 要在画布中包含 application-module-internal 类型,请配置为 。
CanvasOptions
….revealInternals()
-
组件图和应用程序模块画布的输出文件夹已从 移动到构建的目标文件夹(例如 Maven)中。
moduliths-docs
spring-modulith-docs
target