# 项目定制化手册
## 定制化步骤
* 确定项目依赖的组件比如redis,mysql,rabbitmq, 然后搜索`TODO`把不需要的依赖和多余的目录移除.
* 确定项目依赖组件后, 请在application-${env}中配置对应的资源地址.
* 运行单元测试, 保证单元测试全部通过.

## 模块介绍
### common
在该模块添加其他模块共用的lib，例如common-lib以及常用的guava，fastjson等<br>
主要是考虑到项目可能有多个部署的模块，通过将共用的lib定义在common模块中，可以简化其他模块的配置

### server
可部署的后端服务，包含SpringBoot的入口以及该服务相关的client，config，entity，dao, service，controller等

#### config
定义配置信息和错误code

#### client
定义访问依赖的第三方服务的客户端接口. 访问依赖方服务,必须通过Client接口封装,禁止业务代码调用http相关逻辑.

#### entity
定义领域对象. 

#### service
主要定义业务逻辑代码

#### controller
对外暴露的API定义

#### test
单元测试模块. 为了保证交付的质量和服务的演进,核心逻辑需要编写单元测试, 

##### 目录文件
- java
    - ClientStubs 第三方依赖客户端的Stub实现.
    - BaseTest 单元测试基类. 建议每个单元测试从它基础
- resources
    - mysql 存放数据库的schema和测试数据. schema文件可以作为schema变化的版本记录, 同时也是H2数据库初始化脚本.

### integration-test
集成测试，测试已部署服务的APIs
