Spring Modulith在 Spring Boot 应用中实现逻辑模块

联合创作 · 2023-09-30 04:29

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 月之前仅接受错误修复。

快速开始

  1. 在https://start.spring.io上创建一个 Spring Boot 应用程序

  2. 创建一个 Java 包安排,将业务模块作为应用程序主包的直接子包

    □ Example
    └─ □ src/main/java
       ├─ □ example           <1>
       |  └─ Application.java
       ├─ □ example.inventory <2>
       |  └─ …
       └─ □ example.order     <2>
          └─ …
    1. 应用程序根包

    2. 应用模块包

  3. 创建 ApplicationModules 模型、运行验证创建文档片段

    class ApplicationTests {
    
      @Test
      void writeDocumentationSnippets() {
    
        var modules = ApplicationModules.of(Application.class).verify(); (1)
    
        new Documenter(modules) (2)
          .writeModulesAsPlantUml()
          .writeIndividualModulesAsPlantUml();
      }
    }
    1. 创建应用程序模块模型并验证其结构

    2. 将Asciidoctor片段(组件图、应用程序模块画布)渲染到target/modulith-docs.

  4. 为各个应用程序模块运行集成测试

    □ Example
    └─ □ src/test/java
       └─ □ example.order
          └─ OrderModuleIntegrationTests.java
    @ApplicationModuleTests
    class OrderModuleIntegrationTests {
    
      @Test
      void someTestMethod() { … }
    }
浏览 3
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报