1. 包结构
项目的包结构统一采用 组织域名.模块名 的方式,
例如:铭软的basic模块 net.mingsoft.basic,mdiy模块 net.mingsoft.mdiy,
以下描述的都是在 组织域名.模块名下创建
- 实体
entity对应包组织域名.模块名.entity - 业务实体
bean对应包组织域名.模块名.bean - 持久化
dao对应包组织域名.模块名.dao - 业务
biz对应包组织域名.模块名.biz- 业务
biz实现 对应包组织域名.模块名.biz.impl
- 业务
- 控制
action对应包组织域名.模块名.actionweb访客访问 对应包组织域名.模块名.action.webpeople会员访问 对应包组织域名.模块名.action.people
- 常量
constant对应包组织域名.模块名.constant- 枚举
e对应包组织域名.模块名.e
- 枚举
- 资源
resources对应组织域名.模块名.resources - 工具包
util对应组织域名.模块名.util
2. 设计说明
代码分层就是让每一块代码专注于自己功能的实现:比如持久化层就只关心持久化的功能,而不去关心实体层那里应该有多少属性。
目前用到的分层有
- 实体层
entity- 关联业务表名
- 业务实体层
bean- 通常在
entity不满足的情况下扩展出来的实体,一般用于方法型参类型定义
- 通常在
- 持久化层
dao- 持久化层它只关注实体化的工作,只是提供接口
- 对应必须存在dao.xml文件
- 业务层
biz- 业务层关注一个功能的具体业务,比如注册时你要判读这个用户是否是已经注册过,这个用户填写的资料是符合规范等等
- 实现层
impl- 生成对应层级下面的接口实现类
- 控制层
action- 控制层会调用业务层,实现一个具体的功能
- 可以调用了好几个
biz业务层 - 不推荐直接调用
dao代码
- 通用工具
util- 该层包含一些基础的公共工具,在增加工具类前,请优先确定其他工具类中是否已有或可增强拥有此功能,避免重复不利于维护
BasicUtil.*SpringUtil.*是底层提供的关键工具了,ParserUtil.*核心解析freemarker的工具类,具体仔细阅读代码
- 常量
constant- 定义全局常量与枚举类
- 升级版
upgrade- 只有在编写store插件使用才用到
3. 设计原则
每个层次向外公开接口,但是隐藏内部细节
下一层为上一层服务,但不使用上层的服务
不同层之间通过实体类传输数据