1.前言
之前都是在現(xiàn)有框架下進行寫代碼或者總是看一些別人的架構,總會眼高手低。于是打算自己完整的走一遍流程,同時把所遇到的問題,思考的問題記下來,供大家參考。由于是工作年限不高,屬于新手,不足之處還請各位大牛指正。
項目選用Spring為基礎框架,由于目前項目中采用的是Hibernate(在多表關聯(lián)查詢方面以及復雜的統(tǒng)計計算方面,同時要兼顧性能的時候吃了不少苦頭),所以這里采取Mybatis做持久化框架(沒實戰(zhàn)搭建過),Spring MVC框架。在權限控制方面現(xiàn)有項目中采用的是shiro(為了學習,這里使用spring security)。其他的細節(jié)問題會在下面各小節(jié)中敘述。
另說明一點的是操作系統(tǒng)是mac。
github項目源碼在https://github.com/sjlian/sjlian 歡迎clone并提出意見。
2. 創(chuàng)建mvn項目、完善目錄結構
首先安裝和配置環(huán)境,主要包括jdk、mysql、maven等,其他如redis、nginx、ActiveMQ等在初始版本還暫時沒上傳和使用。這些入門知識不再贅述。
在idea上新建一個mvn項目,然后有一個create from archetype,里面有很多選項,于是有個疑問到底用哪個呢?遂逐一查看名字,看到mvn-archetypr-webapp,聽名字就覺得和自己的預期是一樣的啊,于是果斷選擇。期間又試了下其他的各個archetype,發(fā)現(xiàn)這這是一個模板,可以根據(jù)自己需要選擇,也可以默認缺省的。這里附上mvn官方標準化的目錄結構如下圖:
一個好的程序員都善于用命令行的方式解決問題,于是思考怎么用mvn命令行創(chuàng)建項目。最簡單的方式就是mvn archetype:generate,這個命令是默認的 archetype,如果需要生成特定模板的項目呢?從maven的Repository里查找arche types發(fā)現(xiàn)有幾百個,我們平時用的也就那么幾個,由于太多就變得很不方便起來,于是搜索資料,查到 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顧名思義,分別是控制層、持久層、數(shù)據(jù)模型層、業(yè)務處理層。