后端项目结构管理

结合个人工作经验,对后端项目模块结构管理有一些见解,通过博文记录一下,欢迎各位博友指导。

整体结构如图所示:

后端项目结构管理_第1张图片

1 模块说明

1.1 api/contract模块

- 模块内容:解析并校验参数、转换参数为相应的DTO对象、调用执行相应的业务逻辑方法、返回数据。

controller/method(Request) {
    
    Request -> DTO;

    Result = service(DTO);

    Result -> Response;
    
    return Response;
}

 

1.2 consumer

- 模块内容:解析并校验消息、转换消息为相应的DTO对象、调用执行相应的消息处理业务逻辑方法、反馈消息处理结果。

consumer(String) {
    
    String -> Msg -> DTO;

    service(DTO);
    
    return ack;  // true/false:是否处理成功
}

 

1.3 task

- 模块内容:执行定时任务业务逻辑。

schedule() {
    
    [new DTO;]  // 需要的情况下,构造DTO对象;

    service([DTO]);
}

 

1.4 service

- 模块内容:具体业务逻辑代码、获取数据层数据、调用第三方接口、处理和拼装数据、返回业务结果。

service(DTO) {
    
    DTO -> DO -> Repository(DO) -> Result_DO;  // 操作或查询数据库

    DTO -> Obj -> Integration(Obj) -> Result_Obj;  // 调用第三方接口

    Result_DO + Result_Obj -> Result;  // 业务处理逻辑 + 拼装数据

    return Result;  // 返回业务结果
}

 

1.5 repository

- 模块内容:负责封装数据库操作,不包含业务逻辑内容,仅负责数据的增删改查操作。

 

1.6 integration

- 模块内容:负责封装依赖的第三方HTTP/RPC接口调用方法,不包含业务逻辑内容,仅负责调用接口、解析调用结果并返回。

 

1.7 common

- 模块内容:用于存放各种通用内容。

-entities
    -request
    -response
    -msg
    -dto
    -po
    -pojo  // 用于存放第三方接口的参数或返回数据实体类
    -result  // 用于存放service返回结果
-enums
-constants
-exceptions
-utils

 

2 其它内容

2.1 common.utils

(1) 封装Entity转换方法:

/**
 * 封装Request->DTO方法,不同参数调用不同重载方法。
 * 
 * @param request Request对象
 * @param type 转换目标DTO类型
 * @return 目标DTO类型对象
 */
 TransferUtils.transfer(Request request, Class type);

/**
 * 封装Result->Response方法,不同参数调用不同重载方法。
 *
 * @param result Service执行结果Result对象
 * @param type 转换目标Response类型
 * @return 目标Response类型对象
 */
 TransferUtils.transfer(Result result, Class type);

/**
 * 封装Msg->DTO方法,不同参数调用不同重载方法。
 *
 * @param msg 接收的消息msg对象
 * @param type 转换目标DTO类型
 * @return 目标DTO类型对象
 */
 TransferUtils.transfer(Msg msg, Class type);

 

你可能感兴趣的:(Java,Other,Java,后端,项目,模块)