1. 包结构
项目的包结构统一采用 组织域名.模块名 的方式,
例如:铭软的basic模块 net.mingsoft.basic,mdiy模块 net.mingsoft.mdiy,
以下描述的都是在 组织域名.模块名下创建
- 实体 entity对应包组织域名.模块名.entity
- 业务实体 bean对应包组织域名.模块名.bean
- 持久化 dao对应包组织域名.模块名.dao
- 业务 biz对应包组织域名.模块名.biz- 业务 biz实现 对应包组织域名.模块名.biz.impl
 
- 业务 
- 控制 action对应包组织域名.模块名.action- web访客访问 对应包- 组织域名.模块名.action.web
- people会员访问 对应包- 组织域名.模块名.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. 设计原则
- 每个层次向外公开接口,但是隐藏内部细节 
- 下一层为上一层服务,但不使用上层的服务 
- 不同层之间通过实体类传输数据