|
该版本仍在开发中,尚未被视为稳定。最新稳定版请使用Spring Modulith 2.0.0! |
附录
附录A:Spring Boot兼容性
| 春季莫杜利斯版本 | Spring Boot 版本 (对抗编译) |
Spring Boot版本 (测试示例) |
jMolecules (编译) |
j分子 (测试过) |
|---|---|---|---|---|
1.4 |
3.5 |
3.1, 3.2, 3.3, 3.4, 3.5 |
2023.2 |
2023.2,2025.0 RC2 |
1.3 |
3.4 |
3.1, 3.2, 3.3, 3.4, 3.5 |
2023.1 |
2023.1, 2023.2, 2025.0 RC2 |
1.2 |
3.3 |
3.1, 3.2, 3.3, 3.4 |
2023.1 |
2023.1, 2023.2, 2025.0 RC2 |
1.1 |
3.2 |
3.1, 3.2, 3.3, 3.4 |
2023.1 |
2023.1, 2023.2, 2025.0 RC2 |
附录B:Spring基体配置属性
| 属性 | 默认值 | 描述 |
|---|---|---|
|
|
是否配置异步处理终止的默认值,即等待任务完成2秒。看 |
|
没有 |
检测应用模块的策略。
可以是自定义实现的类名 |
|
|
如何标记活动发表为已完成。 支持以下数值:
|
|
|
是否启用事件外部化。 |
|
|
是否初始化JDBC事件发布模式。 |
|
事件发布表的结构名称。如果未指定,该表将不符合模式限定。 |
|
|
|
是否启用 JSON 支持 |
|
|
是否自动启用MongoDB的交易。需要数据库运行副本集。 |
|
|
是否要在 Neo4j 事件发布事件哈希属性上创建索引。 |
|
|
是否启用 JSON 支持 |
|
|
是否在申请重启时重新发布优秀的活动出版物。 通常不建议在多实例部署中使用,因为其他实例可能仍在处理事件。 |
|
|
是否启用 |
|
|
事件的细节需要发布。( |
|
|
这 |
|
|
发布事件日期的时区。 |
|
|
自1.3版本起已弃用。喜欢 |
|
没有 |
这可以是预定义的某个值 |
|
没有 |
计算更改文件集合的提交哈希值。 通常在配置项环境中传播,以考虑自上次成功构建以来的所有变更。 |
附录C:Spring版模块
| 起动机 | 典型范围 | 包括 |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 模块 | 典型范围 | 描述 |
|---|---|---|
|
|
Spring Boot执行器通过执行器暴露应用模块结构。 |
|
|
这些抽象需要用于你的生产代码,以自定义 Spring Modulith 的默认行为。 |
|
|
一个用于提取 Javadoc 以纳入应用模块画布的注释处理器。 |
|
|
核心应用模块模型和API。 |
|
|
这 |
|
|
AMQP 的事件外部化支持。 |
|
|
API,用于自定义Spring Modulith的事件功能。 |
|
|
事件发布注册表的核心实现以及集成抽象 |
|
|
基于Jackson的实现 |
|
|
基于 JDBC 的实现 |
|
|
JMS 的事件外部化支持。 |
|
|
基于 JPA 的实现 |
|
|
Kafka 的事件外部化支持。 |
|
|
事件外部化支持进入 Spring 消息 |
|
|
基于MongoDB的实现 |
|
|
基于 Neo4j 的 |
|
|
基于应用模块结构的测试执行优化。更多详情请点击这里。 |
|
|
这里描述了时间流逝事件的实现。 |
|
|
这里描述了可观测基础设施。 |
|
|
支持自举 |
|
|
集成测试支持。更多详情请点击这里。 |
附录D:事件发布注册表模式
基于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);
玛利亚数据库
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)
);
Microsoft SQL Server
IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'EVENT_PUBLICATION')
CREATE TABLE EVENT_PUBLICATION
(
ID VARCHAR(36) NOT NULL,
LISTENER_ID VARCHAR(512) NOT NULL,
EVENT_TYPE VARCHAR(512) NOT NULL,
SERIALIZED_EVENT VARCHAR(MAX) NOT NULL,
PUBLICATION_DATE DATETIME2(6) NOT NULL,
COMPLETION_DATE DATETIME2(6) NULL,
PRIMARY KEY (ID),
INDEX EVENT_PUBLICATION_BY_COMPLETION_DATE_IDX (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);
附录E:从莫杜利斯迁徙
-
o.m.model.Modules已更名为o.s.m.model.ApplicationModules -
o.m.model.ModuleDetectionStrategy已更名为o.s.m.model.ApplicationModuleDetectionStrategy -
@o.m.test.模块测试已更名为@o.s.m.test.ApplicationModuleTest -
o.m.docs.Documenter.Options已更名为o.s.m.docs.Documenter.DiagramOptions -
组件图的图样式现在默认为
DiagramStyle.C4(通过呼喊覆盖DiagramOptions.withStyle(DiagramStyle.UML)) -
模块画布默认隐藏未暴露的类型。 要在画布中包含应用模块内部类型,请配置
CanvasOptions自......揭示内部(). -
组件图和应用模块画布的输出文件夹已从
Moduliths-docs自Spring-Modulith-docs位于你构建的目标文件夹中(例如目标代表Maven)。