
# DDD
"代码风格 \> 工程目录"设置为"DDD"时，和"单Module"一样，仅会生成"src"一个模块，如[图1]所示。
图1DDD   
![](https://support.huaweicloud.com/usermanual-astropro/zh-cn_image_0000001743830096.png)
#### 代码结构说明
代码结构说明中的"{biz}"，为在AstroPro的[业务设计](https://support.huaweicloud.com/usermanual-astropro/astropro_05_0018.html)中定义的对象，如BO、Abstract BO等。
```
com.astropro
|-- api                                                # API层代码，定义向外部服务暴露的接口（必填项）
    {biz}Api.java                                      # swagger注解
    {biz}Controller.java                               # 输入参数非业务校验
|-- app                                                # 应用层（必填项）
    |-- service                                        # 应用服务层（必填项）
        I{biz}AppService.java                          # 应用服务接口定义（禁止改动）
        |-- impl
            {biz}Service.java                          # 返回值转换为dto
    |-- dto                                            # 数据传输对象，用于接口层返回（必填项）
        {biz}Dto.java                                  # 与BO一一对应
        {customDto}.java                               # 自定义dto（禁止改动）
        |-- converter                                  # bean转换器，用于BO和DTO转换
            {biz}Converter.java                        # 与BO是一一对应关系
    |-- consumer                                       # 消费者（可选项）
        I{biz}Consumer.java
        {biz2}Handler.java
    |-- producer                                       # 生产者（可选项）
        I{biz}Producer.java
    |-- scheduler                                      # 定时任务（可选项）
|-- domain                                             # 领域层，包含基本的业务和业务聚合（必填项）
    |-- service
        I{biz}RepositoryService.java                   # 领域服务接口定义（devspore生成的持久化服务,禁止修改）
        I{biz}GatewayService.java                      # 网关服务接口
        |-- impl
            {biz}DomainService.java                    # 自定义的领域服务实现
    |-- entity                                         # 该聚合下所有的实体、值对象
        {biz}.java
    |-- model                                          # qo、nested、cartesian
    |-- enums                                          # 枚举类
    |-- event                                          # 领域事件实体定义
        {xxx}Event.java
|-- infra                                              # 基础设施层
    |-- repository                                     # 数据操作聚合层，包含基类和继承类（必填项）
        |-- base                                       # 数据操作聚合层基类代码（必填项）
            {biz}BaseRepository.java
        {biz}Repository.java                           # 数据操作聚合层继承类代码，并实现对应的domainService
    |-- mapper                                         # 数据原子操作层。mapper层目录，包含基本接口和继承接口（必填项）
        |-- criteria                                   # mybatis查询对象
        |-- base                                       # mapper层基本接口代码（必填项）
            {biz}BaseMapper.java
        {biz}Mapper.java                               # mapper层继承接口代码。用户可在此类中覆写基本接口中的方法或者增加自定义的方法
    |-- integration                                    # 防腐层，集成第三方服务（跨进程的外部服务），隔离外部系统的影响（可选项）
        GatewayService.java                            # 与领域服务层的I{biz}GatewayService.java一一对应
    |-- mq                                             # mq的具体实现，如kafka、rocketmq
|-- common                                             # 通用包
    |-- config                                         # 配置类（必填项）
    |-- utils                                          # 工具类（必填项）
    |-- exception                                      # 异常类（必填项）
    |-- filter                                         # 过滤器（可选项）
    |-- interceptor
```
#### 资源目录说明
代码结构说明中的"{biz}"，为在AstroPro的[业务设计](https://support.huaweicloud.com/usermanual-astropro/astropro_05_0018.html)中定义的对象，如BO、Abstract BO等。
```
resources
|-- mapper                                             # 开源组件mybatis的mapper.xml文件存放目录
    |-- base                                           # 该目录下的文件禁止用户改动
        {biz}BaseMapper.xml
    {biz}Mapper.xml                                    # 只在初次代码生成，用户可在此文件中实现自定义的方法
|-- openapi                                            # swagger.yaml存放目录
        swagger.yaml                                   # swagger.yaml文件
    application.yml                                    # SpringBoot全局配置文件
    banner.txt                                         # 应用程序的banner文件
    log4j2.xml                                         # log4j2日志配置文件
    metadata.json                                      # 元数据配置文件
```
