dubbo服务项目工程结构规范说明
- groupId com.mingyuan.library
- artifactId mingyuan-library-back-end-*
- package com.mingyuan.library
|- mingyuan-library-back-end
|- mingyuan-library-back-end-api (dubbo接口定义模块,提供服务interface和DTO。)
|- src/main/java
|- com.mingyuan.library.api (Api 接口主包路径,实际开发中把demo替换成自己的业务名称)
|- service (业务模块对外提供的API接口,原则上使用单参数)
|- model (服务端提供的DTO类包路径,**服务之前数据传递尽量使用DTO对象**)
|-pom.xml (jar包配置,非聚合服务不要使用第三方jar包,禁止依赖本project的其他项目)
|-> mingyuan-library-back-end-provider (接口实现工程,不要有任何业务逻辑,最端路径透传到application层)
|- src/main/java
|- com.mingyuan.library (主包路径)
|- config (额外依赖插件的配置注入(mq、cache等))
|- consumer (消息队列)
|- controller (RestAPI,后门接口)
|- filter (过滤器)
|- dubbo (Dubbo接口实现类)
|-scheduler (定时任务)
|- resources
|- application.properties (spring-boot 核心配置文件)
|-pom.xml(dubbo服务相关jar包都在此引入)
|-> mingyuan-library-back-end-application (工程交互展示层)
|- src/main/java
|- com.mingyuan.library.application (主包路径)
|- consumer.handler (消息队列实现,RocketMQ)
|- scheduler.handler (定时任务实现,XXL-JOB)
|- presentation (三件事:DO和DTO转换(使用mapstruct)、调度、聚合)
|-pom.xml
|-> mingyuan-library-back-end-domain (工程领域处理层,最底层)
|- src/main/java
|- com.mingyuan.library.application (主包路径)
|- adpater (网关层接口,三方接口适配,如使用其他工程Dubbo服务)
|- model (领域实体,可做为PO直接使用,实体内逻辑收敛)
|- enums (枚举)
|- constants (常量)
|- repository (仓储层接口)
|- service (领域服务,跨实体核心业务逻辑收敛)
|- utils (工具类)
|-pom.xml
|-> mingyuan-library-back-end-infra (工程基础设施层,依赖倒置,顶层,其他层不可直接调用)
|- src/main/java
|- com.mingyuan.library.infra (主包路径)
|- adpater (网关层实现,三方接口适配,如使用其他工程Dubbo服务)
|- mapper (Mybatis接口)
|- repository (仓储层实现)
|- resources
|- mapper/master/*Mapper.xml (*Mapper.xml文件存放主包路径)
|- mapper/slave/*Mapper.xml (*Mapper.xml文件存放主包路径)
|- mybatis-config.xml (Mybatis 核心配置文件)
|-pom.xml
|-> mingyuan-library-back-end-test (工程集成测试层)
|- src/main/java
|- com.mingyuan.library (主包路径)
|- application (应用层测试)
|- domain (领域层测试)
|- infra (基础设施层测试)
|- test (仓储层实现)
|- TestRoot (测试基类)
|- TestApplication (测试SpringBoot上下文启动类)
|- resources (同主配置)
|- application.properties (spring-boot 核心配置文件)
|- application-dev.properties (spring-boot 跨环境核心配置文件)
|-pom.xml
|- pom.xml (作为父工程pom文件,管理jar包依赖以及jar版本)
- spring-boot 2.3.6.RELEASE
- springframework 5.2.11.RELEASE
- dubbo 2.7.3
- curator 4.1.0
- zookeeper 3.4.8
- druid 1.2.6
- nacos 1.4.2
- springfox-swagger2 2.9.2
- uhfun-dubbo-swagger 1.0.2-SNAPSHOT
- lombok 1.18.16
- fastjson 1.2.76
- spring-boot https://docs.spring.io/spring-boot/docs/2.3.6.RELEASE/reference/htmlsingle/
- dubbo http://dubbo.apache.org/zh-cn/docs/user/quick-start.html
- nacos https://nacos.io/zh-cn/docs/quick-start-spring-boot.html
dubbo-extention http://10.20.6.43:9090/pages/viewpage.action?pageId=34682231
- 灰度、上下文、异常拦截、报警、日志
1、lombok https://blog.csdn.net/sunsfan/article/details/53542374
- @Data
注解写在实体类上,提供了属性的get和set方法,另外还对equals、hashCode、toString等方法进行了重写 - @Log4j
注解写在类上,为该类提供一个属性名为 log的log4j日志对象
2、mapstruct https://mapstruct.org/
idea代码注释模板配置请参考:https://blog.csdn.net/qushaming/article/details/96867190
- Provider模块实现API模块的接口,使用@Service注册该接口,注意:@Service是Dubbo中的实现而不是Spring中的。
- 该服务同时作为Consumer,需要调用其他服务API,需要使用@Reference指定注册的接口。
- 统一返回响应状态码、状态码对应的消息 申请各类编码、错误码段 通用错误类:*
- 数据DTO对象包含在统一消息体中 com.mingyuan.framework.core.dto.Response
- 分页参考 PageParam 请求 PageData 返回
一.版本控制:
- 迁移自己的对应功能模块前,需基于dev创建分支,XXXXXXXXXX
- 模块开完、测试完成,再合并到dev
二.编码规范:
- git地址:https://github.com/alibaba/p3c
- 安装方法请参考:https://blog.csdn.net/u010597189/article/details/83619544
- 暂定每周扫描一次工程代码,对自己负责的部分按照规范进行修改,Blocker 级别的提示,必须要修改的
- 日志规范文档请参考:*
- 配置文件 provider/config/SwaggerConfig.java
- 接口文档UI访问地址: swagger页面:http://host:port/swagger-ui.html#/ docUI页面:http://host:port/doc.html