Skip to content

MingYuanTomas/mingyuan-library-back-end

Repository files navigation

mingyuan-library-back-end

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

各核心技术文档参考

公共组件

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

dubbo 服务注册以及引用注解说明

  • Provider模块实现API模块的接口,使用@Service注册该接口,注意:@Service是Dubbo中的实现而不是Spring中的。
  • 该服务同时作为Consumer,需要调用其他服务API,需要使用@Reference指定注册的接口。

服务之间通信响应数据统一格式

  • 统一返回响应状态码、状态码对应的消息 申请各类编码、错误码段 通用错误类:*
  • 数据DTO对象包含在统一消息体中 com.mingyuan.framework.core.dto.Response
  • 分页参考 PageParam 请求 PageData 返回

mingyuan-library-back-end 服务简要说明

一.版本控制:

  1. 迁移自己的对应功能模块前,需基于dev创建分支,XXXXXXXXXX
  2. 模块开完、测试完成,再合并到dev

二.编码规范:

代码规范

参考《阿里巴巴开发手册》

电子书路径参考:https://github.com/alibaba/p3c/blob/master/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4Java%E5%BC%80%E5%8F%91%E6%89%8B%E5%86%8C%EF%BC%88%E5%8D%8E%E5%B1%B1%E7%89%88%EF%BC%89.pdf

代码规范插件,使用Alibaba Java Coding Guidelines

日志规范

  • 日志规范文档请参考:*

Swagger3集成

About

DDD library

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages