java WEB项目结构

java项目结构

项目结构

包命名由名公司名+(项目名)组成:vip.infotech.base-platform.common
前端代码目录功能模块划分与后端保持一致。
不建common公共工程保持各个子工程独立性。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
base-platform
|--platform-admin 后台管理
|--java
|--common 公共模块
|--module 功能模块
|--sys (后台管理的业务如果仅仅是系统管理,这个层级可以去掉,通过工程名划分业务)
|--controller
|--dao
|--entity
|--service
|--resources
|--default
|--statics
|--templates
|--mapper
|--platform-api api接口,对页面与外部提供接口
|--java
|--common 公共模块
|--module 功能模块
|--basedata 基础模块(各种基础数据模型维护、厂家、设备型号等业务模型维护)
|--location 定位业务模块
|--webservice webservice接口模块
|--monitor 设备监控与管理模块,事件监控、定时配置与策略等
|--alarm 告警模块
|--report 原始记录指标分析模块(可以跟stats模块合并)
|--stats 统计模块
|--manage/business 核心业务模块(业务比较单一使用)
|--system 系统管理模块
|--maintain 系统备份、各个模块数据内容备份还原等(非必须,可以放入system模块)
|--platform-spi spi接口,对接设备等南向接口,比如定位接口
|--java
|--common 公共模块
|--module 功能模块
|--manage/business 核心业务模块(业务单一,这个层级可以去掉,通过工程名划分业务)
|--platform-spi-mock spi接口,模拟器
|--platform-gen 代码生成
|--platform-schedule 定时任务
|--platform-shop 商城后台管理 (通过工程划分业务例子)
|--platform-ui 前端页面
|--mall 商城 (通过工程划分业务例子)
|--wx-mall 微信商城 (通过工程划分业务例子)

编码

对于页面使用到的下拉框选择涉及多个表的建议入口放在需要获取的原始数据管理模块上。比如需要用户下拉框,可能根据部门查询用户,可能根据区域查询用户信息。建议都放在用户接口上get: user/area-select,get: user/dept-select或者get: user/select?userId=xxx&deptId=xxx这种比较适合复用性强的接口。当然如果统一放在条件接口上也是可以的,需要保持统一如:get: area/user-select,get: dept/user-select。还有就是通过关注点进行选择,如果关注的是用户的各种功能可以放在用户上,如果关注点是其他用户至少附属概念可以考虑放在其他位置。