1.前言
之前都是在现有框架下进行写代码或者总是看一些别人的架构,总会眼高手低。于是打算自己完整的走一遍流程,同时把所遇到的问题,思考的问题记下来,供大家参考。由于是工作年限不高,属于新手,不足之处还请各位大牛指正。
项目选用Spring为基础框架,由于目前项目中采用的是Hibernate(在多表关联查询方面以及复杂的统计计算方面,同时要兼顾性能的时候吃了不少苦头),所以这里采取Mybatis做持久化框架(没实战搭建过),Spring MVC框架。在权限控制方面现有项目中采用的是shiro(为了学习,这里使用spring security)。其他的细节问题会在下面各小节中叙述。
另说明一点的是操作系统是mac。
github项目源码在https://github.com/sjlian/sjlian 欢迎clone并提出意见。
2. 创建mvn项目、完善目录结构
首先安装和配置环境,主要包括jdk、mysql、maven等,其他如redis、nginx、ActiveMQ等在初始版本还暂时没上传和使用。这些入门知识不再赘述。
在idea上新建一个mvn项目,然后有一个create from archetype,里面有很多选项,于是有个疑问到底用哪个呢?遂逐一查看名字,看到mvn-archetypr-webapp,听名字就觉得和自己的预期是一样的啊,于是果断选择。期间又试了下其他的各个archetype,发现这这是一个模板,可以根据自己需要选择,也可以默认缺省的。这里附上mvn官方标准化的目录结构如下图:
一个好的程序员都善于用命令行的方式解决问题,于是思考怎么用mvn命令行创建项目。最简单的方式就是mvn archetype:generate,这个命令是默认的 archetype,如果需要生成特定模板的项目呢?从maven的Repository里查找arche types发现有几百个,我们平时用的也就那么几个,由于太多就变得很不方便起来,于是搜索资料,查到 http://maven.40175.n5.nabble.com/archetype-catalog-xml-location-archetype-crawl-versus-archetype-generate-td113741.html
完善目录结构大致如上图(是demo最终版本),这个时候只需要在java目录下新建几个包,进行分层,使项目结构变得清晰。
common主要放置一些通用的非工具类,如exception相关,结果相关,拦截器,servlet,VO类等。
Controller、DAO、model、service顾名思义,分别是控制层、持久层、数据模型层、业务处理层。