生成代码

更新时间: 2023-09-15 18:29:48

代码生成是根据当前应用关联的限界上下文模型生成对应的接口定义、接口实现、领域服务类、聚合根、值对象、实体类、数据对象类、数据ORM以及常用的操作,包括增、删、改、查等相关操作代码。本文介绍如何生成代码。

说明
  • 如果关联了限界上下文,则根据限界上下文的模型生成代码。

  • 如果没有关联限界上下文,则生成空的脚手架代码。

  • 已发布的应用不支持代码生成功能。

操作步骤

  1. 登录BizWorks,在选择平台下拉列表中选中微服务开发平台image.png

  2. 单击页面右上角image.png图标或其文本框区域,在下拉列表中单击目标项目名称后,单击应用页签。在应用列表页面单击目标中心应用名称。image.png

  3. 在目标中心应用左侧导航栏中,选择应用开发 > 代码生成

  4. 代码生成页面,单击代码生成

  5. 代码生成面板,查看内容和版本,选择合适的代码分支,并设置相关参数。image.png

    说明

    本文以代码分支提交至代码库获取方式为例说明如何配置相关配置项。

    代码分支与生成逻辑如下:

    代码分支

    生成逻辑

    新分支

    直接全量生成新代码。

    基于旧分支checkout新分支

    需要在已有代码的基础上重新生成代码:

    • 模型中存在但代码中不存在,直接生成新的代码。

    • 模型中存在且代码中也存在,但代码中已经做过修改,则用模型覆盖。

    • 代码模型中存在,代码中也存在,并且两者相同的,不做任何处理。

    • 模型中不存在但代码中存在的,不做任何处理。

    说明

    不显示生成代码结构部分,只能根据原有分支的结构生成代码。

    生成到已有分支

    代码分支与参数说明如下:

    • 新分支

      参数

      说明

      新建分支

      填写新分支的名称,默认格式为:develop_yyyyMMdd_HHmmss。限制如下:

      • 由大小写字母、数字、中文或字符组成。

      • 字符数不超过100位。

      GroupId

      填写工程GroupId的名称。限制如下:

      • 由小写字母、数字和小数点组成。

      • 需以小写字母开头,且需以小写字母或数字结尾。

      • 字符数不超过64位。

      完成GroupId首次填写后,您可以单击点击修改,在编辑中心应用面板维护GroupId1具体操作,请参见设置代码项目基本信息

      ArtifactId

      默认为该应用的编码。您可以修改此编码,限制如下:

      • 由小写字母、数字和短横线(-)组成。

      • 需以小写字母开头,且需以小写字母或数字结尾。

      • 字符数不超过64位。

      完成ArtifactId首次填写后,您可以单击点击修改,在编辑中心应用面板维护ArtifactId1具体操作,请参见设置代码项目基本信息

      Version

      默认值为1.0.0。您可以修改此描述,限制如下:

      • 由大小写字母、数字、小数点和短横线(-)组成。

      • 需以字母或数字开头和结尾。

      • 字符数不超过64位。

      包路径

      默认格式为groupid.artifactid。您可以修改此路径描述,限制如下:

      • 由小写字母、数字和小数点组成。

      • 需以小写字母开头,且需以小写字母或数字结尾。

      • 字符数不能超过128位。

      应用架构

      支持DDD四层架构与MVC三层架构。

      生成代码结构(应用架构选择DDD四层架构时选择)

      支持一级Module和二级Module,默认选择二级Module。

      • 一级Module:Module直接按DDD架构实践分层,在各Module内部用包划分限界上下文。

      • 二级Module:第一级按限界上下文划分,第二级按DDD架构时间分层。

      技术组件

      默认选择MyBatis。技术组件支持Nacos、Swagger、JPA等,可多选。

    • 基于旧分支checkout新分支

      参数

      说明

      基础分支

      在基础分支列表中,选择所需的旧分支。

      新建分支

      填写新分支的名称,默认格式为:develop_yyyyMMdd_HHmmss。新分支名称的限制如下:

      • 由英文、数字、中文或字符组成。

      • 字符数不超过100位。

      GroupId

      项目信息自动带出基础分支所对应的项目信息。

      您可以单击点击修改,在编辑中心应用面板维护GroupId1具体操作,请参见设置代码项目基本信息

      ArtifactId

      项目信息自动带出基础分支所对应的项目信息。

      您可以单击点击修改,在编辑中心应用面板维护ArtifactId1具体操作,请参见设置代码项目基本信息

      Version

      不可修改。项目信息自动带出基础分支所对应的项目信息。

      包路径

      应用架构

      支持DDD四层架构与MVC三层架构。

      技术组件

      • 默认勾选基础分支生成脚手架时选择的技术组件。

        • 如果基础分支在生成脚手架时没有选择技术组件,则默认都不勾选。

        • 如果基础分支在生成脚手架时有选择对应的技术组件,则默认勾选支持的技术组件。

      • 默认选择的技术组件不支持重新选择。

    • 生成到已有分支

      参数

      说明

      基础分支

      在基础分支列表中,选择所需的旧分支。

      GroupId

      项目信息自动带出基础分支所对应的项目信息。

      您可以单击点击修改,在编辑中心应用面板维护GroupId1具体操作,请参见设置代码项目基本信息

      ArtifactId

      项目信息自动带出基础分支所对应的项目信息。

      您可以单击点击修改,在编辑中心应用面板维护ArtifactId1具体操作,请参见设置代码项目基本信息

      Version

      不可修改。项目信息自动带出基础分支所对应的项目信息。

      包路径

      技术组件

      • 默认勾选基础分支生成脚手架时选择的技术组件。

        • 如果基础分支在生成脚手架时没有选择技术组件,则默认都不勾选。

        • 如果基础分支在生成脚手架时有选择对应的技术组件,则默认勾选支持的技术组件。

      • 默认选择的技术组件不支持重新选择。

    说明

    如果您选择添加技术组件生成代码,则系统会在脚手架默认添加对应依赖、配置、示例代码、使用说明。如果涉及外部服务(例如:Nacos、RocketMQ等),则不会自动部署一套外部服务,主要提供脚手架支持。

    • 如果您将应用的生成代码结构参数设置为一级Module,单击生成代码

      平台在生成代码时前后端都不会校验该应用是否关联了限界上下文。如果当前应用没有实现任何限界上下文,生成的代码中有app、client等目录,且目录下面会有demo代码。

    • 如果您将应用的生成代码结构参数设置为二级Module,且如果当前应用没有实现任何限界上下文,完成其他参数配置,单击生成代码后界面会弹出报错信息。

      请您先完成限界上下文的构建。具体操作,请参见创建与管理限界上下文

    • 如果您将应用的生成代码结构参数设置为二级Module,且如果当前应用已实现限界上下文,完成其他参数配置后,单击代码生成

执行结果

代码生成后,您可以进入对应的代码仓库,查看生成的分支,包含appentrydomaininfrastructureclientstarter7个基础模块(module)。脚手架代码框架每个module的职责说明如下:

module

职责

描述

app

元数据表达转化。

限界上下文应用服务方法出入参的元数据表达转化。同时,业务方也可以在这里写应用实现。

entry

核心业务入口。

业务入口,当应用通过Spring Cloud实现,则controller在该模块编写,通过controller调用底层业务逻辑形成闭环,并将DTO与domain entity进行转换。

domain

领域实现层,实现核心业务逻辑。

domain层主要负责编写业务逻辑。通过业务建模后,业务逻辑通过domain entitydomain service来承载,因此是通过充血模型的方式来完成代码开发。涉及对外调用则通过调用domain层定义的repository interface来完成。具体外部访问的技术实现由infrastructure实现。

infrastructure

基础设施层:负责技术实现,包括访问DB、Cache、RPC、MQ等。

domain会实现业务逻辑,而业务逻辑中涉及到技术实现的部分(保存、RPC请求、MQ发送消息、缓存等)都通过infrastructurerepositoryImpl实现。infrastructure除了技术实现,还包括DO定义、DO与domain entity的互相转换,以及集成并调用外部服务的client

client

域服务接口定义。

外部应用集成的SDK,便于能力调用。在SDK中定义限界上下文应用服务接口定义、接口入参和返回值DTO、接口返回错误码定义、业务自定义异常定义等。

starter

应用启动。

独立应用启动的包,方便启动方式插拔变更。

如果代码生成失败,分支状态显示生成失败,单击查看原因,查看具体失败原因。

阿里云首页 BizWorks 相关技术圈