此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Modulith 1.3.0spring-doc.cn

附录

附录 A:Spring 模数配置属性

财产 默认值 描述

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

truespring-doc.cn

是否为异步处理终止配置默认值,即等待任务完成 2 秒。有关详细信息,请参阅。TaskExecutionPropertiesspring-doc.cn

spring.modulith.detection-strategyspring-doc.cn

没有spring-doc.cn

用于检测应用程序模块的策略。 可以是 or 的自定义实现的类名(如果未配置任何内容,这也是最终回退),也可以只选择显式注释为 或 jMolecules' 的包。有关详细信息,请参阅自定义应用程序模块检测ApplicationModuleDetectionStrategydirect-subpackagesexplicitly-annotated@ApplicationModule@Modulespring-doc.cn

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

truespring-doc.cn

是否开启事件外部化。spring-doc.cn

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

falsespring-doc.cn

是否初始化 JDBC 事件发布架构。spring-doc.cn

spring.modulith.events.kafka.enable-jsonspring-doc.cn

truespring-doc.cn

是否为 .KafkaTemplatespring-doc.cn

spring.modulith.events.mongodb.transaction-management.enabledspring-doc.cn

truespring-doc.cn

是否自动为 MongoDB 启用事务。要求使用副本集运行数据库。spring-doc.cn

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

falsespring-doc.cn

是否在 .spring-doc.cn

spring.modulith.events.rabbitmq.enable-jsonspring-doc.cn

truespring-doc.cn

是否为 .RabbitTemplatespring-doc.cn

spring.modulith.moments.enableTimeMachinespring-doc.cn

falsespring-doc.cn

是否启用 TimeMachinespring-doc.cn

spring.modulith.moments.granularityspring-doc.cn

HOURSspring-doc.cn

要发布的事件的粒度。(,HOURSDAYS)spring-doc.cn

spring.modulith.moments.localespring-doc.cn

Locale.getDefault()spring-doc.cn

确定周边界时使用的。Localespring-doc.cn

spring.modulith.moments.zoneIdspring-doc.cn

ZoneOffset.UTCspring-doc.cn

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

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

falsespring-doc.cn

是否在应用程序重新启动时重新发布未完成的事件发布。 通常不建议在多实例部署中使用,因为其他实例可能仍在处理事件。spring-doc.cn

附录 B:Spring Modulith 模块

表 1.Spring Modulith Starters POM
起动机 典型范围 包括

spring-modulith-starter-corespring-doc.cn

compilespring-doc.cn

spring-modulith-starter-insightspring-doc.cn

runtimespring-doc.cn

spring-modulith-starter-jdbcspring-doc.cn

compilespring-doc.cn

spring-modulith-starter-jpaspring-doc.cn

compilespring-doc.cn

spring-modulith-starter-mongodbspring-doc.cn

compilespring-doc.cn

spring-modulith-starter-neo4jspring-doc.cn

compilespring-doc.cn

spring-modulith-starter-testspring-doc.cn

testspring-doc.cn

表 2.单个 Spring Modulith JAR
模块 典型范围 描述

spring-modulith-actuatorspring-doc.cn

runtimespring-doc.cn

一个 Spring Boot 执行器,用于通过 Actuator 公开应用程序模块结构。spring-doc.cn

spring-modulith-apispring-doc.cn

compilespring-doc.cn

要在 生产代码中用于自定义 Spring Modulith 的默认行为的抽象。spring-doc.cn

spring-modulith-corespring-doc.cn

runtimespring-doc.cn

核心应用程序模块模型和 API。spring-doc.cn

spring-modulith-docsspring-doc.cn

testspring-doc.cn

用于从模块模型创建 Asciidoctor 和 PlantUML 文档的 API。Documenterspring-doc.cn

spring-modulith-events-amqpspring-doc.cn

runtimespring-doc.cn

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

spring-modulith-events-apispring-doc.cn

runtimespring-doc.cn

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

spring-modulith-events-corespring-doc.cn

runtimespring-doc.cn

事件发布注册表的核心实现以及集成抽象和 .EventPublicationRegistryEventPublicationSerializerspring-doc.cn

spring-modulith-events-jacksonspring-doc.cn

runtimespring-doc.cn

基于 Jackson 的 .EventPublicationSerializerspring-doc.cn

spring-modulith-events-jdbcspring-doc.cn

runtimespring-doc.cn

基于 JDBC 的 .EventPublicationRegistryspring-doc.cn

spring-modulith-events-jmsspring-doc.cn

runtimespring-doc.cn

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

spring-modulith-events-jpaspring-doc.cn

runtimespring-doc.cn

基于 JPA 的 .EventPublicationRegistryspring-doc.cn

spring-modulith-events-kafkaspring-doc.cn

runtimespring-doc.cn

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

spring-modulith-events-mongodbspring-doc.cn

runtimespring-doc.cn

基于 MongoDB 的 .EventPublicationRegistryspring-doc.cn

spring-modulith-events-neo4jspring-doc.cn

runtimespring-doc.cn

基于 Neo4j 的 .EventPublicationRegistryspring-doc.cn

spring-modulith-junitspring-doc.cn

testspring-doc.cn

基于应用程序模块结构的测试执行优化。在此处查找更多详细信息。spring-doc.cn

spring-modulith-momentsspring-doc.cn

compilespring-doc.cn

此处介绍了 Passage of Time 事件实现。spring-doc.cn

spring-modulith-observabilityspring-doc.cn

runtimespring-doc.cn

可观测性基础设施spring-doc.cn

spring-modulith-runtimespring-doc.cn

runtimespring-doc.cn

支持在运行时引导实例。通常不直接依赖,而是传递由 和 使用。ApplicationModulesspring-modulith-actuatorspring-modulith-observabilityspring-doc.cn

spring-modulith-testspring-doc.cn

testspring-doc.cn

集成测试支持。在此处查找更多详细信息。spring-doc.cn

附录 C:事件发布注册表架构

基于 JDBC 的事件发布注册表支持要求数据库中存在以下数据库架构。 如果您希望 Spring Modulith 为您创建架构,请将 application 属性设置为 。spring.modulith.events.jdbc-schema-initialization.enabledtruespring-doc.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);

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.ApplicationModulesspring-doc.cn

  • o.m.model.ModuleDetectionStrategy已重命名为o.s.m.model.ApplicationModuleDetectionStrategyspring-doc.cn

  • @o.m.test.ModuleTest已重命名为@o.s.m.test.ApplicationModuleTestspring-doc.cn

  • o.m.docs.Documenter.Options已重命名为o.s.m.docs.Documenter.DiagramOptionsspring-doc.cn

  • 组件图的图表样式现在默认为 (override by callingDiagramStyle.C4DiagramOptions.withStyle(DiagramStyle.UML))spring-doc.cn

  • 默认情况下,模块 canvas 会隐藏未公开的类型。 要在画布中包含 application-module-internal 类型,请配置为 。CanvasOptions….revealInternals()spring-doc.cn

  • 组件图和应用程序模块画布的输出文件夹已从 移动到构建的目标文件夹(例如 Maven)中。moduliths-docsspring-modulith-docstargetspring-doc.cn