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






浏览 16
点赞
评论
收藏
分享

手机扫一扫分享

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

手机扫一扫分享

编辑 分享
举报