Contents
  1. 1. 基础模块
    1. 1.1. interface
    2. 1.2. common
    3. 1.3. service
    4. 1.4. dao/mapper
    5. 1.5. manager
    6. 1.6. 数据流操作
    7. 1.7. bean/domain
    8. 1.8. config
    9. 1.9. constants
    10. 1.10. exception
      1. 1.10.1. cause
    11. 1.11. test
  2. 2. 常用模块
  3. 3. 客户端接口设计
  4. 4. 本地功能

基础模块

interface

一般单独一个maven模块,接口模块可能有对个,对内的和对外的

common

是可以快速拖到另一个项目直接用的,包括

  • 对中间件能力的封装
  • utils类
  • 上游基础服务manager

service

业务逻辑处理,返回Result封装类

dao/mapper

数据库操作

manager

依赖二方和三方能力的封装

数据流操作

  • Datasource:数据来源(数据库、缓存、客户端置顶,运营配置)。方法名:fromXXX
  • Transfer:类型转换。方法名:toXXX
  • Filter:数据过滤(黑白名单,字段约束)。方法名:byXXX
  • Completer:补数据。方法名:addXXX
  • Sorter:数据排序。方法名:topXXX、shuffleXXX
  • Validator:有效性验证,过滤不符合要求的数据。方法名:checkXXX
  • Factory:基于基本元素,数据拼接生产。方法名:createXXX
  • Iterator:保存各类遍历过程

bean/domain

所有数据类,各个层次命名要能区分,作为查询条件,最好加上前缀,比如type,命名成taskType

  • service层输入:BO结尾
  • service层输出:DTO结尾
  • Web层输入:AO结尾
  • Web层输出:VO结尾
  • 数据库输入输出:DO结尾
  • 数据库查询输入:Query结尾

config

在线和本地配置的封装类,一个配置文件对应一个类

  • 查询类:Query结尾

constants

有三个级别常量:

  • 项目全局
  • 包级别
  • 类级别

exception

  • 每个层次都会有一个层次的异常,比如xxxServcieException、xxxMangerException
  • 某个层次如果要抛Exception异常,会对上层Exception有污染,需要捕捉后重新抛一下这个层次的异常
  • Exception内部可以定义错误码,通过错误码来描述所有Error和Warn情况

cause

异常里面包括错误码和对应的错误描述

常见错误类别:

  • Get_xxx_Failed:获取xx数据失败

  • No_Invalid_xxx:无有效xx数据

  • Parse_xxx_Failed:解析xx失败

  • Param_Invalid_xxx:参数无效xx

  • Sync_xxx_Config_Failed:同步xx配置失败

  • Call_xxx_Failed:调用xx失败

  • Insert_xxx_Failed:插入xx失败

  • Update_xxx_Failed:插入xx失败

  • Query_xxx_Failed:插入xx失败

test

单元测试模块

常用模块

  1. 任务管理模块:插件式的任务管理服务。
  2. 消息分发模块:消息发送和接收模块解耦。开源项目:JMS、RabbitMQ。
  3. 鉴权模块:细分鉴权。开源项目:OAuth2.0
  4. 心跳控制模块。开源项目:Zookeeper
  5. 分布式数据库:开源项目:Redis
  6. 名单模块:控制整个系统的各类名单,比如黑白名单
  7. 静态配置下发模块:各个配置可以通过统一接口下发配置
  8. 标签模块:给实体打上对应的标签,比如审核结果
  9. 标注模块:对应缓存、关键日志用标注实现

客户端接口设计

  • 主要分为三大类
    • 信息录入
    • 信息查询
    • 基于信息查询结果,进行后续操作
  • 基本设计原则
    • 功能集中原则:前端尽量简单,直接读取后端字段展示,后端维护字段的描述和对应的key,前端提交的是描述字段,在controller层,转换成BO层对应的key,在VO层转换成对应的描述,key和描述的映射关系,如果很固定,用enum表示,如果不固定,用bidmap才保存映射关系

本地功能

  1. 流程控制模块。开源项目:Spring中@EnableBatchProcessing标签
  2. Jason字段到Object映射:Spring中@Valid标签
  3. 面向切面编程,比如权限控制中使用:Spring中Fliter功能
  4. AOP、IOC:Spring
  5. ORM工具: MyBatis
  6. 日志功能:log4j
  7. 配置文件模板:Webx中的AutoConfig文件
Contents
  1. 1. 基础模块
    1. 1.1. interface
    2. 1.2. common
    3. 1.3. service
    4. 1.4. dao/mapper
    5. 1.5. manager
    6. 1.6. 数据流操作
    7. 1.7. bean/domain
    8. 1.8. config
    9. 1.9. constants
    10. 1.10. exception
      1. 1.10.1. cause
    11. 1.11. test
  2. 2. 常用模块
  3. 3. 客户端接口设计
  4. 4. 本地功能