| .. | ||
| src/main/resources | ||
| .gitignore | ||
| pom.xml | ||
| README.md | ||
archetype-standard
公司项目标准骨架
xxx-common
通用模块,包前缀标准为:cn.axzo.xxx.common. 里面可以定义 constants 包用来定义系统中使用到的常量值;context 包用来定义系统当中要使用到的上下文;enums 包用来定义系统当中使用到的枚举值;utils 包用来定义系统当中的工具类等。
因为这个模块都会被其它模块引用,所以这个模块的 pom.xml 依赖的 jar 包必须是公共能用的,比如:lombok,common-utils ,guava,fastjson 等。不应该引用的 jar 比如携程的配置中心 apollo(xxx-client 依赖);远程服务调用 dubbo 或者 feign (xxx-integration 依赖)。
xxx-dal
数据访问模块,包前缀标准为:cn.axzo.xxx.dal. 里面可以定义 mapper 包用来定义服务访问 mapper 接口;repository 包用来定义包装 mapper 接口(主要功能是可以代理增强 mapper);entity 包用来定义数据库实体访问对象。domain 包用来定义访问数据库的请求对象等。
因为这个模块的主要功能是访问数据库,所以这个模块的 pom.xml 依赖的 jar 包应该是和数据访问相关的。比如:jdbc 驱动;mybatis 等
xxx-integration
外部接口集成模块,包前缀标准为:cn.axzo.xxx.integration. 里面可以定义 service 包用来定义 feign 接口,定义 client 接口用来包装 service 包中的接口(代理增强 service:打印日志,异常处理);可以定义 dto 包用来定义远程请求与响应对象。
xxx-client
请求处理模块,包前缀标准为:cn.axzo.xxx.client. 里面可以定义 controller 包用于定义响应前端请求的控制器,config 包用于定义整个项目的配置(Redis 配置,Xxl Job 配置,Spring Web 统一异常配置,数据库配置等),interceptor 包用来定义 spring mvc 中的拦截器等。
xxx-service-api
业务逻辑模块,包前缀标准为:cn.axzo.xxx.service.api. 里面定义的接口直接给 xxx-client 中的 controller 调用,所有的业务逻辑都会被封装到它的实现类当中。业务 Controller 只会调用这个 Service 并不关注具体的业务实现细节。可以定义 request 包用于 service 接口的请求参数,可以定义 response 用于 service 接口的响应参数。
xxx-service
业务逻辑实现模块,是 xxx-service-api 模块定义的接口的实现类接口,包前缀标准为:cn.axzo.xxx.service.impl..它是聚合 xxx-manager 这个通用处理层的,它主要是集成数据库访问以及第三方接口的调用。它的作用是业务逻辑的编排。
xxx-manager-api
通用逻辑模块,包前缀标准为:cn.axzo.xxx.manager.api.,可以是访问数据库的一些逻辑的编排,也可以是定义一些公共的逻辑处理,比如:时间处理 Manager,分布式锁 Manager 等
xxx-manager
能用逻辑实现模块:包前缀标准为:cn.axzo.xxx.manager.impl.。它对访问数据库的一些逻辑的编排达到操作的原子性,同时也实现一些公共逻辑处理的一些实现。
xxx-test:
单元测试模块:所有模块的单元测试都可以放在这个模块里。