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