Java EE工程目录结构规范

目的

为了规范应用的组件划分,明确各组件的边界,通过高内聚低耦合实现应用的模块化结构。

适用范围

所有Lifeix应用都应该遵循此规范。

规范

 

工程目录结构的划分

目录及结构
说明
xxx
     xxx.yyy.dao
     xxx.yyy.service
     xxx.yyy.impl
     xxx.yyy.web
     xxx.war
     xxx.task
     pom.xml
xxx.yyy.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/impl/UserDao.xml
     src/main/resources/conf/xxx-yyy-spring-dao.xml
     src/main/resources/conf/xxx-yyy-sqlmap-config.xml
     src/test/resources/test4j.properties
     src/test/resources/system.properties
     src/test/resources/conf/xxx-yyy-spring-dao-test.xml
     pom.xml
xxx.yyy.service
     src/main/java/com.lifeix.xxx.yyy.beans.User.java
     src/main/java/com.lifeix.xxx.yyy.service.UserService.java
     pom.xml
xxx.yyy.impl
     src/main/java/com.lifeix.xxx.yyy.service.impl.UserServiceImpl.java
     src/main/resources/conf/xxx-yyy-spring-service.xml
     src/test/java/com.lifeix.xxx.yyy.service.impl.UserServiceImplTest.java
     src/test/resources/test4j.properties
     src/test/resources/system.properties
     src/test/resources/conf/xxx-yyy-spring-service-test.xml
     pom.xml
xxx.yyy.web
     src/main/java/com.lifeix.xxx.yyy.web.vo.User.java
     src/main/java/com.lifeix.xxx.yyy.web.controller.UserController.java
     src/main/resources/conf/xxx-yyy-spring-web.xml
     src/test/java
     src/test/resources
     pom.xml
xxx.war
     src/main/java
     src/main/resources
     src/main/webapp/WEB-INF/web.xml
     src/test/java
     src/test/resources/conf/xxx-application-context.xml
     pom.xml
xxx.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
     pom.xml
  1. 采用工程集的方式组织每个应用的代码,实现高度的模块化
  2. 采用maven管理模块直接的依赖关系
  3. xxx为顶层目录,里面包括父pom.xml文件和各子工程的文件目录
  4. xxx.yyy.dao 子工程主要存放访问数据库的类和配置文件
  5. xxx.yyy.service 子工程主要存放业务层的接口和领域模型,在做服务化的时候提供给第三方使用
  6. xxx.yyy.impl 子工程是业务层的实现类和配置文件
  7. xxx.yyy.web 子工程提供http协议的数据接口
  8. xxx.war 子工程包含war包所需的jsp、web.xml 等
  9. xxx.task 子工程主要是应用里面offline的业务操作,比如数据迁移、定时任务等业务逻辑
  10. 子工程可以根据各应用的情况具体增减
  11. xxx代码应用名称,各应用需要使用自己的应用名称替换“xxx”,yyy代码模块名称,各模块需要使用自己的名称替换“yyy”,比较简单的应用如果没有多模块的划分可以省略yyy

 

注:参考 apollo 工程目录结构  ssh://[email protected]:19022/framework/lifeix-demo.git

 

 

子工程直接的依赖关系

子工程直接的依赖关系如下图:

Java EE工程目录结构规范_第1张图片

 

另外:工程集的parent需要继承自com.lifeix.pom,dependency的版本号、打包脚步 等都在com.lifeix.com 中控制

Java EE工程目录结构规范_第2张图片

 

命名规范

目录命名规范
  • 子工程所在的目录名称使用“.”将应用名称、模块名称、组件后缀分开
  • 目录名称都使用小写
  • 每个子工程下面的资源分四个目录组织,分别是: 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为模块名称。

你可能感兴趣的:(文档)