# 微服务项目规范

## base-pom
公司所有项目依赖统一管理.
任何服务中引入新的依赖后,需要在base-pom中添加依赖管理

## common
common-core:提供了基本的公共类.

common-spring:各种中间件或工具与spring融合的增强

common-mvc:与springmvc相关的技术的增强和配置

## 微服务结构
project是maven主项目, 以base-pom为parent.

controller,service,persistence,model是module,以project为parent.

## model
model分为entity,DTO,VO
* entity:常规模型,通常与数据库对应(不绝对).
* DTO:服务间数据传输,临时对象,都可以使用DTO.
* VO:展示层数据传输

除了以上三种,不能有更多model命名方式.

## persistence
依赖model层.
简单查询可以直接使用mybatisplus中提供的`IService`或`BaseMapper`进行查询,不需要写sql;

复杂查询,在mapper.xml中写sql;

每个服务只能连接自己的数据库, 不能直连其他数据库, 如果需要从其他数据库读写数据, 应该通过其他服务器的接口.

## service
主要代码都在该层. 所有service必须有接口.
`config`spring相关配置
`constant`全局通用静态变量
`consumer`服务调用者,使用feign
`job`任务调度
`listener`消息队列消费者
`dto`数据模型
`model`数据模型
`impl`service接口实现

## controller
控制器层,分为web控制器和api控制器.
web控制器用于对外接口,api控制用于内部接口

该层只做数据路由, 不能包含主要逻辑.

## provider
提供可供其他服务调用的api.
