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() { … } }
评论