工程模板
介绍实际项目,组织代码与资源
按照如下规范组织项目
项目组织规范
Maven文件
在xx项目下,xx/pom.xml
Web.xml配置
在xx项目src/main/webapp/WEB-INF/web.xml
在Eclipse IDE中,如果没有Web.xml文件,可以通过在项目上面右键,J2EE Tools,Generate Deployment Description Stub。来生成空的Web.xml。
其他Serlvet配置
在xx项目src/main/webapp/WEB-INF/xx-serlvet.xml如果有其他的serlvet,也放到WEB-INF目录下。
前端相关页面
我们一般把前端静态文件内容,放置到webapp目录下。也可以创建子目录。示例的spring-template项目中的freemarker目录是存放我们的模板文件。可以根据习惯进行定义。根据所在项目的项目组的情况,进行命名。
Spring的配置文件
Spring的配置文件,放置到src/main/resources目录下,如果有一些Spring的测试配置文件,是放到src/test/resources目录下。
在我们之前的示例里面都有application-context.xml作为Spring核心配置文件。当项目比较大后,需要模块划分。application-context.xml存放通用性内容。回去分application-context-dao.xml和application-context-service.xml。由于现在使用Annotation(注解)的方式比较多,则不需要再application-context-dao.xml文件中,添加每个dao的配置。
一般情况下,我们跟数据库相关的配置存放在src/main/resources/db.properties里面。定义与db相关的内容。
**注意:**单元测试的配置文件存放到src/test/resources里面。
代码层面
项目模块命名
项目的前缀如com.company.project_name。
Controller
一般controller放置到com.company.project_name.web.controller目录下。一般放置controller的类。
Filter
com.company.project_name.web.filter,filter是存放安全、日志相关的功能。
Service
com.company.project_name.service这个目录存放Service的Interface,而不是具体实现。文件命名为xxxService.java。
com.company.project_name.service.impl存放具体实现。文件名称为xxxServiceImpl.java,这个类要实现这个接口。
Dao
com.company.project_name.dao由于Dao通过MyBatis的方式实现,则我们不需要区分Dao接口与实现。如果需要通过接口的形式的话,则可能需要重新分配com.company.project_name.dao与com.company.project_name.dao.impl
meta
com.company.project_name.meta。meta代表存放的一般性的JavaBean。meta一般存放数据库表所对应的Java字段。实际代表存放entity。
utils
com.company.project_name.utils一般存放工具类,如字符串格式化,日期时间工具类。其他常用工具类。一般Utils定义public static 的方法。
附录
Spring-Template项目tree
D:.
├─src
│ ├─main
│ │ ├─java
│ │ │ └─com
│ │ │ └─netease
│ │ │ └─course
│ │ │ ├─dao
│ │ │ ├─meta
│ │ │ ├─service
│ │ │ │ └─impl
│ │ │ ├─utils
│ │ │ └─web
│ │ │ ├─controller
│ │ │ └─filter
│ │ ├─resources
│ │ └─webapp
│ │ ├─freemarker
│ │ └─WEB-INF
│ └─test
│ ├─java
│ └─resources
└─target
├─classes
│ └─com
│ └─netease
│ └─course
│ ├─dao
│ ├─meta
│ ├─service
│ │ └─impl
│ ├─utils
│ └─web
│ ├─controller
│ └─filter
├─generated-sources
│ └─annotations
└─spring-template-0.0.1-SNAPSHOT
├─freemarker
├─META-INF
└─WEB-INF
└─classes
└─com
└─netease
└─course
├─dao
├─meta
├─service
│ └─impl
├─utils
└─web
├─controller
└─filter