Java EE工程目录结构规范
2014-09-17 10:49
190 查看
目的
为了规范应用的组件划分,明确各组件的边界,通过高内聚低耦合实现应用的模块化结构。
适用范围
所有Lifeix应用都应该遵循此规范。
规范
工程目录结构的划分
目录及结构 | 说明 | |
---|---|---|
采用工程集的方式组织每个应用的代码,实现高度的模块化 采用maven管理模块直接的依赖关系 xxx为顶层目录,里面包括父pom.xml文件和各子工程的文件目录 xxx.yyy.dao 子工程主要存放访问数据库的类和配置文件 xxx.yyy.service 子工程主要存放业务层的接口和领域模型,在做服务化的时候提供给第三方使用 xxx.yyy.impl 子工程是业务层的实现类和配置文件 xxx.yyy.web 子工程提供http协议的数据接口 xxx.war 子工程包含war包所需的jsp、web.xml 等 xxx.task 子工程主要是应用里面offline的业务操作,比如数据迁移、定时任务等业务逻辑 子工程可以根据各应用的情况具体增减 xxx代码应用名称,各应用需要使用自己的应用名称替换“xxx”,yyy代码模块名称,各模块需要使用自己的名称替换“yyy”,比较简单的应用如果没有多模块的划分可以省略yyy |
注:参考 apollo 工程目录结构 ssh://git@pangtong.l99.com:19022/framework/lifeix-demo.git
子工程直接的依赖关系
子工程直接的依赖关系如下图:另外:工程集的parent需要继承自com.lifeix.pom,dependency的版本号、打包脚步 等都在com.lifeix.com 中控制
命名规范
目录命名规范
子工程所在的目录名称使用“.”将应用名称、模块名称、组件后缀分开
目录名称都使用小写
每个子工程下面的资源分四个目录组织,分别是: src/main/java、src/main/resources、src/test/java、src/test/resources
应用名称、模块名称尽量简单,最长不超过8个字符
包命名规范
dao子工程中包的命名规范如下:
src/main/java/com.lifeix.xxx.yyy.domain.User.java
src/main/java/com.lifeix.xxx.yyy.dao.UserDao.java
src/main/java/com.lifeix.xxx.yyy.dao.impl.UserDaoImpl.java
src/main/resources/com/lifeix/xxx/yyy/dao/impl/UserDaoImpl.xml
src/main/resources/conf/xxx-yyy-spring-dao.xml
ORM中的Entity包名为:com.lifeix.%appname%.%modulename%.domain
DAO接口所在包为:com.lifeix.%appname%.%modulename%.dao
DAO接口实现类所在包为:com.lifeix.%appname%.%modulename%.dao.impl
DAO操作使用的SQL脚步文件所在目录为:com/lifeix/%appname%/%modulename%/dao/impl
DAO的配置文件所在目录为:src/main/resources/conf/
service子工程中包名规范如下:
src/main/java/com.lifeix.%appname%.%modulename%.beans.User.java
src/main/java/com.lifeix.%appname%.%modulename%.service.UserService.java
Service中的领域模型所在的包名为:com.lifeix.%appname%.%modulename%.beans
Service中的接口所在的包名为:com.lifeix.%appname%.%modulename%.service
impl子工程中包名规范如下:
src/main/java/com.lifeix.%appname%.%modulename%.service.impl.UserServiceImpl.java
src/main/resources/conf/xxx-yyy-spring-service.xml
src/test/java/com.lifeix.%appname%.%modulename%.service.impl.UserServiceImplTest.java
src/test/resources/test4j.properties
src/test/resources/system.properties
src/test/resources/conf/xxx-yyy-spring-service-test.xml
Impl中业务接口的实现所在的包名为:com.lifeix.%appname%.%modulename%.service.impl
Impl中业务实现的配置文件所在的目录为:src/main/resources/conf/
web子工程中包名规范如下:
src/main/java/com.lifeix.%appname%.%modulename%.web.vo.User.java
src/main/java/com.lifeix.%appname%.%modulename%.web.controller.UserController.java
src/main/resources/conf/xxx-yyy-spring-web.xml
Web层数据数据对象所在的包为:com.lifeix.%appname%.%modulename%.web.vo
Web层Controller所在的包为:com.lifeix.%appname%.%modulename%.web.controller
Web层配置文件所在的目录为:src/main/resources/conf/
war子工程中包名规范如下:
src/main/java
src/main/resources/conf/xxx-application-context.xml
src/main/webapp/WEB-INF/web.xml
Web层配置文件所在的目录为:src/main/resources/conf/
task子工程中包名规范如下:
src/main/java/com.lifeix.xxx.yyy.task.service.UserStatService.java
src/main/java/com.lifeix.xxx.yyy.task.service.impl.UserStatServiceImpl.java
src/main/resources/conf/xxx-spring-task.xml
src/test/java/com.lifeix.xxx.yyy.task.service.impl.UserStatServiceImplTest.java
src/test/resources/test4j.properties
src/test/resources/system.properties
src/test/resources/conf/xxx-spring-task-test.xml
task中业务接口所在的包为:com.lifeix.%appname%.%modulename%.task.service
task中业务接口实现所在的包为:com.lifeix.%appname%.%modulename%.task.service.impl
task中配置文件所在的目录为:src/main/resources/conf/
单元测试的包名及目录规范:
单元测试类的包名和所测试类的包名一致,所在的目录为 src/test/java
系统配置文件system.properties及单元测试配置文件test4j.properties所在的目录为:src/test/resources
单元测试 spring 配置文件所在目录为:src/test/resources/conf
类的命名规范
DAO的接口命名为:XxxDao
DAO的实现类命名为:XxxDaoImpl
Service层接口命名为:XxxService
Service层接口实现类命名为:XxxServiceImpl
Web层controller的命名为:XxxController
单元测试类的命名为:XxxDaoImplTest、XxxControllerTest
注:Xxx 为对象名称
配置文件命名规范
DAO层配置文件命名为:xxx-yyy-spring-dao.xml、xxx-yyy-sqlmap-config.xml
Service层配置文件命名为:xxx-yyy-spring-service.xml
Web层的命名为:xxx-yyy-spring-web.xml
war包的命名为:xxx-application-context.xml
Task的配置文件命名为:xxx-spring-task.xml
系统配置文件命名为:system.properties
单元测试配置文件:test4j.properties、system.properties、xxx-yyy-spring-dao-test.xml、xxx-yyy-spring-service-test.xml、xxx-yyy-spring-web-test.xml、xxx-spring-task-test.xml
注:xxx 为应用名称、yyy为模块名称。
相关文章推荐
- FleaPHP 开发指南 - 4. 命名规范和目录结构
- FleaPHP 开发指南 - 4. 命名规范和目录结构
- Android学习笔记1——建立android工程及其目录结构
- Android 工程目录的结构
- Android入门教程(四)之------Android工程目录结构介绍
- FleaPHP 开发指南 - 4. 命名规范和目录结构
- Android学习笔记--工程创建及目录结构
- Android入门教程(四)之------Android工程目录结构介绍
- Android入门教程(四)之------Android工程目录结构介绍
- FleaPHP 开发指南 - 4. 命名规范和目录结构
- 网站目录结构规范讨论
- FleaPHP 开发指南 - 4. 命名规范和目录结构
- 工程目录结构模板设计
- FleaPHP 开发指南 - 4. 命名规范和目录结构
- FleaPHP 开发指南 - 4. 命名规范和目录结构
- FleaPHP 开发指南 - 4. 命名规范和目录结构
- FleaPHP 开发指南 - 4. 命名规范和目录结构
- 开启 or 关闭 tomcat 或 jboss 下 工程文件 的 目录结构 显示
- Myeclipse工程目录结构显示问题
- MTK工程目录结构