最新稳定版请使用Spring Modulith 2.0.0spring-doc.cadn.net.cn

附录

附录A:Spring Boot兼容性

春季莫杜利斯版本 Spring Boot 版本
(对抗编译)
Spring Boot版本
(测试示例)
jMolecules
(编译)
j分子
(测试过)

1.4(快照)spring-doc.cadn.net.cn

3.4spring-doc.cadn.net.cn

3.1, 3.2, 3.3, 3.4spring-doc.cadn.net.cn

2023.2spring-doc.cadn.net.cn

2023.2,2025.0 RC2spring-doc.cadn.net.cn

1.3spring-doc.cadn.net.cn

3.4spring-doc.cadn.net.cn

3.1, 3.2, 3.3, 3.4spring-doc.cadn.net.cn

2023.1spring-doc.cadn.net.cn

2023.1, 2023.2, 2025.0 RC2spring-doc.cadn.net.cn

1.2spring-doc.cadn.net.cn

3.3spring-doc.cadn.net.cn

3.1, 3.2, 3.3, 3.4spring-doc.cadn.net.cn

2023.1spring-doc.cadn.net.cn

2023.1, 2023.2, 2025.0 RC2spring-doc.cadn.net.cn

1.1spring-doc.cadn.net.cn

3.2spring-doc.cadn.net.cn

3.1, 3.2, 3.3, 3.4spring-doc.cadn.net.cn

2023.1spring-doc.cadn.net.cn

2023.1, 2023.2, 2025.0 RC2spring-doc.cadn.net.cn

附录B:Spring基体配置属性

属性 默认值 描述

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

truespring-doc.cadn.net.cn

是否配置异步处理终止的默认值,即等待任务完成2秒。看TaskExecutionProperties细节。spring-doc.cadn.net.cn

spring.modulith.detection-strategyspring-doc.cadn.net.cn

没有spring-doc.cadn.net.cn

检测应用模块的策略。 可以是自定义实现的类名应用模块检测策略直接子包(如果没有配置,这也是最终的备用方案)或者显式注释只选择带有显式注释的包@ApplicationModule或jMolecules的@Module.详情请参见自定义应用模块检测spring-doc.cadn.net.cn

Spring.modulith.events.completion-modespring-doc.cadn.net.cn

更新spring-doc.cadn.net.cn

如何标记活动发表为已完成。 支持以下数值:spring-doc.cadn.net.cn

  • 更新(默认)——在事件发布条目上设定完成日期。spring-doc.cadn.net.cn

  • 删除——删除活动发布条目。 已完成的活动出版物无法通过以下渠道获取完成的活动出版物.spring-doc.cadn.net.cn

  • 档案— 从主数据库抽象(表、集合或节点)中移除事件发布条目,并在归档中创建一个(同一模式的表、集合或节点)。 详情请参见活动发布完成spring-doc.cadn.net.cn

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

truespring-doc.cadn.net.cn

是否启用事件外部化。spring-doc.cadn.net.cn

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

falsespring-doc.cadn.net.cn

是否初始化JDBC事件发布模式。spring-doc.cadn.net.cn

Spring.Modulith.events.jdbc.schemaspring-doc.cadn.net.cn

事件发布表的结构名称。如果未指定,该表将不符合模式限定。spring-doc.cadn.net.cn

Spring.Modulith.events.kafka.enable-jsonspring-doc.cadn.net.cn

truespring-doc.cadn.net.cn

是否启用 JSON 支持卡夫卡模板.spring-doc.cadn.net.cn

Spring.modulith.events.mongodb.transaction-management.enabledspring-doc.cadn.net.cn

truespring-doc.cadn.net.cn

是否自动启用MongoDB的交易。需要数据库运行副本集。spring-doc.cadn.net.cn

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

falsespring-doc.cadn.net.cn

是否要在 Neo4j 事件发布事件哈希属性上创建索引。spring-doc.cadn.net.cn

Spring.Modulith.events.rabbitmq.enable-jsonspring-doc.cadn.net.cn

truespring-doc.cadn.net.cn

是否启用 JSON 支持兔子模板.spring-doc.cadn.net.cn

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

falsespring-doc.cadn.net.cn

是否在申请重启时重新发布优秀的活动出版物。 通常不建议在多实例部署中使用,因为其他实例可能仍在处理事件。spring-doc.cadn.net.cn

spring.modulith.moments.enableTimeMachinespring-doc.cadn.net.cn

falsespring-doc.cadn.net.cn

是否启用时间机器.spring-doc.cadn.net.cn

Spring.Modulith.Moments.granularityspring-doc.cadn.net.cn

小时spring-doc.cadn.net.cn

事件的细节需要发布。(小时,)spring-doc.cadn.net.cn

spring.modulith.moments.localespring-doc.cadn.net.cn

Locale.getDefault()spring-doc.cadn.net.cn

现场用于确定周数边界。spring-doc.cadn.net.cn

spring.modulith.moments.zoneId(春)modulith.moments.zoneId(春)。spring-doc.cadn.net.cn

ZoneOffset.UTCspring-doc.cadn.net.cn

发布事件日期的时区。spring-doc.cadn.net.cn

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

falsespring-doc.cadn.net.cn

自1.3版本起已弃用。喜欢spring.modulith.events.republish-outstanding-events-on-restart.spring-doc.cadn.net.cn

spring.modulith.test.file-modification-detectorspring-doc.cadn.net.cn

没有spring-doc.cadn.net.cn

这可以是预定义的某个值未提交的更改,引用提交,默认值或为 的全限定类别名称文件修改检测器该数据将用于检查哪些项目文件被更改。 顾名思义,未提交的更改只考虑未提交的更改文件。引用提交将视为自某次 Git 提交以来所有文件被更改,通过以下方式提供Spring.Modulith.test.reference-commit,尤其是有用的CI环境,在该特性中可以指向上次成功构建的提交哈希。默认值检测所有未完成的变更以及未推送到当前分支的跟踪分支的变更,该分支主要对本地开发有用。spring-doc.cadn.net.cn

Spring.Modulith.test.reference-commitspring-doc.cadn.net.cn

没有spring-doc.cadn.net.cn

计算更改文件集合的提交哈希值。 通常在配置项环境中传播,以考虑自上次成功构建以来的所有变更。spring-doc.cadn.net.cn

附录C:Spring版模块

表1。春季Modulith起始POMs(Spring版)开始
起动机 典型范围 包括

Spring-模块-起始-核心spring-doc.cadn.net.cn

编译spring-doc.cadn.net.cn

Spring-Modulith-starter-insightspring-doc.cadn.net.cn

运行spring-doc.cadn.net.cn

Spring-Modulith-Starter-JDBCspring-doc.cadn.net.cn

编译spring-doc.cadn.net.cn

Spring-Modulith-starter-jpaspring-doc.cadn.net.cn

编译spring-doc.cadn.net.cn

Spring-Modulith-starter-mongodbspring-doc.cadn.net.cn

编译spring-doc.cadn.net.cn

Spring-Modulith-starter-neo4jspring-doc.cadn.net.cn

编译spring-doc.cadn.net.cn

Spring-模-起始-测试spring-doc.cadn.net.cn

测试spring-doc.cadn.net.cn

表2。单个Spring基体JARs
模块 典型范围 描述

Spring-模量-执行器spring-doc.cadn.net.cn

运行spring-doc.cadn.net.cn

Spring Boot执行器通过执行器暴露应用模块结构。spring-doc.cadn.net.cn

Spring-Modulith-APIspring-doc.cadn.net.cn

编译spring-doc.cadn.net.cn

这些抽象需要用于你的生产代码,以自定义 Spring Modulith 的默认行为。spring-doc.cadn.net.cn

Spring-模-应用spring-doc.cadn.net.cn

编译spring-doc.cadn.net.cn

一个用于提取 Javadoc 以纳入应用模块画布的注释处理器。spring-doc.cadn.net.cn

Spring-模块-核心spring-doc.cadn.net.cn

运行spring-doc.cadn.net.cn

核心应用模块模型和API。spring-doc.cadn.net.cn

Spring-Modulith-docsspring-doc.cadn.net.cn

测试spring-doc.cadn.net.cn

记录者用于从模块模型创建Asciidoctor和PlantUML文档的API。spring-doc.cadn.net.cn

Spring-Modulith-Events-AMQPspring-doc.cadn.net.cn

运行spring-doc.cadn.net.cn

AMQP 的事件外部化支持。spring-doc.cadn.net.cn

Spring-Modulith-Events-APIspring-doc.cadn.net.cn

运行spring-doc.cadn.net.cn

API,用于自定义Spring Modulith的事件功能。spring-doc.cadn.net.cn

Spring-模块-事件-核心spring-doc.cadn.net.cn

运行spring-doc.cadn.net.cn

事件发布注册表的核心实现以及集成抽象活动出版注册事件出版序列化器.spring-doc.cadn.net.cn

春-模-事件-Jacksonspring-doc.cadn.net.cn

运行spring-doc.cadn.net.cn

基于Jackson的实现事件出版序列化器.spring-doc.cadn.net.cn

Spring-Modulith-Events-JDBCspring-doc.cadn.net.cn

运行spring-doc.cadn.net.cn

基于 JDBC 的实现活动出版注册.spring-doc.cadn.net.cn

Spring-Modulith-events-JMSspring-doc.cadn.net.cn

运行spring-doc.cadn.net.cn

JMS 的事件外部化支持。spring-doc.cadn.net.cn

Spring-Modulith-events-JPAspring-doc.cadn.net.cn

运行spring-doc.cadn.net.cn

基于 JPA 的实现活动出版注册.spring-doc.cadn.net.cn

春-模-事件-卡夫卡spring-doc.cadn.net.cn

运行spring-doc.cadn.net.cn

Kafka 的事件外部化支持。spring-doc.cadn.net.cn

Spring-Modulith-事件-消息spring-doc.cadn.net.cn

运行spring-doc.cadn.net.cn

事件外部化支持进入 Spring 消息消息频道s.spring-doc.cadn.net.cn

Spring-Modulith-events-mongodbspring-doc.cadn.net.cn

运行spring-doc.cadn.net.cn

基于MongoDB的实现活动出版注册.spring-doc.cadn.net.cn

Spring-Modulith-events-neo4jspring-doc.cadn.net.cn

运行spring-doc.cadn.net.cn

基于 Neo4j 的活动出版注册.spring-doc.cadn.net.cn

Spring-模块-朱尼特spring-doc.cadn.net.cn

测试spring-doc.cadn.net.cn

基于应用模块结构的测试执行优化。更多详情请点击这里spring-doc.cadn.net.cn

Spring Shellspring-doc.cadn.net.cn

编译spring-doc.cadn.net.cn

这里描述了时间流逝事件的实现。spring-doc.cadn.net.cn

Spring-模量可观测性spring-doc.cadn.net.cn

运行spring-doc.cadn.net.cn

这里描述了可观测基础设施。spring-doc.cadn.net.cn

Spring-模量-运行时间spring-doc.cadn.net.cn

运行spring-doc.cadn.net.cn

支持自举应用模块运行时实例。通常不直接依赖于 ,而是传递性地使用Spring-模量-执行器Spring-模量可观测性.spring-doc.cadn.net.cn

Spring-模块测试spring-doc.cadn.net.cn

测试spring-doc.cadn.net.cn

集成测试支持。更多详情请点击这里spring-doc.cadn.net.cn

附录D:废弃模块

表3。废弃模表
模块 已弃用 描述

Spring-Modulith-Events-AWS-SNSspring-doc.cadn.net.cn

1.3spring-doc.cadn.net.cn

请迁移到io.awspring.cloud:spring-cloud-aws-modulith-events-sns.请参见此链接spring-doc.cadn.net.cn

Spring-Modulith-events-aws-sqsspring-doc.cadn.net.cn

1.3spring-doc.cadn.net.cn

请迁移到io.awspring.cloud:spring-cloud-aws-modulith-events-sqs.请参见此链接spring-doc.cadn.net.cn

附录E:事件发布注册表模式

基于JDBC的事件发布注册表支持期望数据库中存在以下数据库模式。 如果你想让 Spring Modulith 帮你创建模式,请设置应用属性spring.modulith.events.jdbc-schema-initialization.enabledtrue.spring-doc.cadn.net.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)
);
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);

附录F:从半晶体迁移

  • o.m.model.Modules已更名为o.s.m.model.ApplicationModulesspring-doc.cadn.net.cn

  • o.m.model.ModuleDetectionStrategy已更名为o.s.m.model.ApplicationModuleDetectionStrategyspring-doc.cadn.net.cn

  • @o.m.test.模块测试已更名为@o.s.m.test.ApplicationModuleTestspring-doc.cadn.net.cn

  • o.m.docs.Documenter.Options已更名为o.s.m.docs.Documenter.DiagramOptionsspring-doc.cadn.net.cn

  • 组件图的图样式现在默认为DiagramStyle.C4(通过呼喊覆盖DiagramOptions.withStyle(DiagramStyle.UML))spring-doc.cadn.net.cn

  • 模块画布默认隐藏未暴露的类型。 要在画布中包含应用模块内部类型,请配置CanvasOptions......揭示内部().spring-doc.cadn.net.cn

  • 组件图和应用模块画布的输出文件夹已从Moduliths-docsSpring-Modulith-docs位于你构建的目标文件夹中(例如目标代表Maven)。spring-doc.cadn.net.cn