1.前言
之前都是在現(xiàn)有框架下進(jìn)行寫代碼或者總是看一些別人的架構(gòu),總會眼高手低。于是打算自己完整的走一遍流程,同時把所遇到的問題,思考的問題記下來,供大家參考。由于是工作年限不高,屬于新手,不足之處還請各位大牛指正。
項目選用Spring為基礎(chǔ)框架,由于目前項目中采用的是Hibernate(在多表關(guān)聯(lián)查詢方面以及復(fù)雜的統(tǒng)計計算方面,同時要兼顧性能的時候吃了不少苦頭),所以這里采取Mybatis做持久化框架(沒實戰(zhàn)搭建過),Spring MVC框架。在權(quán)限控制方面現(xiàn)有項目中采用的是shiro(為了學(xué)習(xí),這里使用spring security)。其他的細(xì)節(jié)問題會在下面各小節(jié)中敘述。
另說明一點(diǎn)的是操作系統(tǒng)是mac。
github項目源碼在https://github.com/sjlian/sjlian 歡迎clone并提出意見。
2. 創(chuàng)建mvn項目、完善目錄結(jié)構(gòu)
首先安裝和配置環(huán)境,主要包括jdk、mysql、maven等,其他如redis、nginx、ActiveMQ等在初始版本還暫時沒上傳和使用。這些入門知識不再贅述。
在idea上新建一個mvn項目,然后有一個create from archetype,里面有很多選項,于是有個疑問到底用哪個呢?遂逐一查看名字,看到mvn-archetypr-webapp,聽名字就覺得和自己的預(yù)期是一樣的啊,于是果斷選擇。期間又試了下其他的各個archetype,發(fā)現(xiàn)這這是一個模板,可以根據(jù)自己需要選擇,也可以默認(rèn)缺省的。這里附上mvn官方標(biāo)準(zhǔn)化的目錄結(jié)構(gòu)如下圖:
一個好的程序員都善于用命令行的方式解決問題,于是思考怎么用mvn命令行創(chuàng)建項目。最簡單的方式就是mvn archetype:generate,這個命令是默認(rèn)的 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
完善目錄結(jié)構(gòu)大致如上圖(是demo最終版本),這個時候只需要在java目錄下新建幾個包,進(jìn)行分層,使項目結(jié)構(gòu)變得清晰。
common主要放置一些通用的非工具類,如exception相關(guān),結(jié)果相關(guān),攔截器,servlet,VO類等。
Controller、DAO、model、service顧名思義,分別是控制層、持久層、數(shù)據(jù)模型層、業(yè)務(wù)處理層。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26