Spring Modulith在 Spring Boot 应用中实现逻辑模块
Spring Modulith 支持开发人员在 Spring Boot 应用程序中实现逻辑模块,它允许应用结构验证、记录模块安排、为单个模块运行集成测试、在运行时观察模块交互,以及以松散耦合的方式实现模块交互。
Spring Modulith 项目引入了新的类和注释但不生成代码,它的模块不使用 Java 平台模块系统 (JPMS),而是映射到纯 Java 包。模块有一个 API,但 Spring Modulith 鼓励使用 Spring 应用程序事件作为“交互的主要方式”,这些事件可以自动保存到事件日志中。
简单的说,Spring Modulith提供一套工具,可以消息传递的方式来实现同一个 monolithic 服务内部的跨模块调用(而不是直接互相调用 API)。
Spring Modulith 基于 Spring Boot 3.0、Framework 6、Java 17 和 JakartaEE 9 ,它是 Moduliths 项目的继承者,后者使用 Spring Boot 2.7,但现已停用,在 2023 年 11 月之前仅接受错误修复。
快速开始
-
在https://start.spring.io上创建一个 Spring Boot 应用程序
-
创建一个 Java 包安排,将业务模块作为应用程序主包的直接子包。
□ Example
└─ □ src/main/java
├─ □ example <1>
| └─ Application.java
├─ □ example.inventory <2>
| └─ …
└─ □ example.order <2>
└─ …
-
应用程序根包
-
应用模块包
-
-
创建
ApplicationModules模型、运行验证并创建文档片段。
class ApplicationTests {
@Test
void writeDocumentationSnippets() {
var modules = ApplicationModules.of(Application.class).verify(); (1)
new Documenter(modules) (2)
.writeModulesAsPlantUml()
.writeIndividualModulesAsPlantUml();
}
}
-
为各个应用程序模块运行集成测试。
□ Example
└─ □ src/test/java
└─ □ example.order
└─ OrderModuleIntegrationTests.java
@ApplicationModuleTests
class OrderModuleIntegrationTests {
@Test
void someTestMethod() { … }
}
评论
