更新时间:2020-05-22 17:49
SOFABoot 模块化开发主要目标是如何让各个模块的上下文之间既实现隔离,又能彼此互相通信。主要实现原理如下:
SOFABoot 模块化开发的整体设计,示例如下:
下文对模块化开发做进一步说明。
一个 SOFABoot 工程可以包含多个模块,每个模块都含有独立的上下文。
SOFABoot 模块主要包括下述 2 个部分:
更多 SOFABoot 模块配置信息,请参考 模块配置文件。
SOFABoot 模块化开发是基于 Spring 上下文隔离的模块化。以 SOFABoot 模块为单元的模块化方式为开发者提供了以下功能:
按照官网文档 创建工程 创建的 SOFABoot 工程有 2 种类型:
启动类一般都放在可部署模块中。可部署模块指使用 spring-boot-maven-plugin 打包的模块。
上述 2 个工程类型的可部署模块及对应启动类为:
SOFABootWebApplication
SOFABootApplication
开启 SOFABoot 模块化,需要在工程 可部署模块 的 pom.xml 中,增加 isle-alipay-sofa-boot-starter
依赖,且无需指定依赖版本号,示例如下:
<dependency>
<groupId>com.alipay.sofa</groupId>
<artifactId>isle-sofa-boot-starter</artifactId>
</dependency>
模块化实现主要涉及的上下文包括:
Root ApplicationContext
:本文简称为 rt_appc,指启动工程的启动类时,运行 SpringApplication.run
所启动的 Spring 上下文。applicationContext
:本文简称为 appc,指各个模块都有的一个 Spring 上下文。在 SOFABoot 工程中,主要实现原理描述如下:
isle-alipay-sofa-boot-starter
会负责找到工程中的各个模块,然后将各个模块里独立的 appc 启动起来。上下文隔离后,模块与模块间的 Bean 无法直接注入,模块间需要通过 SOFA 服务进行通信。目前 SOFABoot 提供以下两种形式的服务发布和引用,实现不同级别模块间的调用:
每个 SOFABoot 模块都是独立的 Spring 上下文,多个 SOFABoot 模块支持并行化启动。与 Spring Boot 的单 Spring 上下文模式相比,模块并行化启动能够加快应用的启动速度。
在文档使用中是否遇到以下问题
更多建议
匿名提交