模块
Trantor模块逻辑上是一个 namespace ,用于划分资源作用域,并使资源可以按模块粒度分发和复用。而当自定义代码需要被部署和调用时,模块又将成为物理上存在的微服务,以分布式的方式提供服务,详情见:理解Trantor Module。
创建模块
Trantor 模块为标准 maven 工程。因为模型(Model)可能会被其他maven模块依赖,同时还有模块间的服务调用。所以推荐分为api和server两个maven子模块
- 工程结构如下:
trantor-example-module├── example-module-api│ ├── pom.xml| └── src│ ├── main│ │ ├── java│ │ │ └── io│ │ │ └── terminus│ │ │ └── trantor│ │ │ └── example│ │ │ └── dictionary│ │ │ └── model│ │ └── resources│ │ └── trantor.yml├── example-module-server│ ├── pom.xml| └── src│ ├── main│ │ ├── java│ │ │ └── io│ │ │ └── terminus│ │ │ └── trantor│ │ │ └── example│ │ │ └── ExampleApplication.java│ │ └── resources│ │ └── application.yml└── pom.xmlapi模块
api 模块主要放置 模块、模型 、字典等可供其他模块依赖的资源。
因为在定义trantor资源时会用到trantor相关api,所以我们需要在pom.xml中添加相关依赖。
<dependency> <groupId>io.terminus.trantor</groupId> <artifactId>api</artifactId></dependency>trantor将模块的定义抽象为了更易于理解的yaml文件,所以我们可以再api模块的resources目录中添加 trantor.yml
product: key: example_project_product version: 0.0.1-SNAPSHOTmodule: key: example_module name: example_module packageName: io.terminus.trantor.example version: 0.0.1-SNAPSHOT description: Trantor module example模块定义见参数详情
server模块
server 模块主要放置 视图、行为 等逻辑实现以及启动类。
因为在该模块中会有具体的业务逻辑实现以及Trantor模块的启动,所以我们需要再pom.xml中添加api以及trantor-framwork的依赖。
<dependency> <groupId>io.terminus.trantor.examples</groupId> <artifactId>example-module-api</artifactId> <version>${project.version}</version></dependency><dependency> <groupId>io.terminus.trantor</groupId> <artifactId>framework</artifactId></dependency>因为Trantor的模块本质上来说还是一个SpringBoot,所以我们还需要添加application.yml和Main Class
- Application.yml
trantor: mainModule: example_module # tranotr.yml 中定义的模块 key- Main Class
@SpringBootApplicationpublic class ExampleApplication { public static void main(String[] args) { SpringApplication.run(ExampleApplication.class, args); }}内嵌模块
Trantor 模块一般来说对应一个部署单元,考虑到有一些轻量级的附属模块,为了方便部署和代码管理,允许在一个主模块中,同时内嵌多个子模块。 主模块为必选模块,内嵌的子模块可以在启动时通过配置改变其启用状态。 模块正常启动完成后,在交付控制台上会看到多个模块,但是在运行时,对子模块的调用都会路由到同一个 JVM。
- Application.yml
trantor: mainModule: example_module # 当前模块下 trantor.yml 中定义的模块 key embedModules: - moduleA # 对应模块下 trantor.yml 中定义的模块 key - moduleB # 对应模块下 trantor.yml 中定义的模块 key enabledModuleKeys: moduleA,moduleB # 本次启用的内嵌模块 key ,多个之间用逗号分隔常见问题
- 将trantor.yml中的模块key修改后,其他关联资源(
*-view.xml、*-action.json等)的key没有改,导致资源找不到。trantor key 规则