引言
在上一篇文章簡單講解了種子項目搭建,但是項目搭建起來是爲了方便我們後續開發的。因此瞭解整個項目的架構,以及各個Maven模塊是如何各司其職、相互依賴,是至關重要的。
這裏分成兩塊介紹
- lenosp自帶的內容
- 新增擴展的內容
lenosp自帶的內容
首先我們看看lenosp腳手架自帶的Maven模塊有哪些
- len-admin:這是博客管理員的模塊,這裏用不上,不管
- len-blog:這是博客模塊,同上
- len-core
- len-sys
- len-web
下面主要講講len-core
、len-sys
、len-web
這三個模塊。
len-core
何謂core?core在英文中的意思是核心、要點,而在該項目中,len-core也是整個項目的核心。我們先來看看文件結構
可以看到,這裏有四個大包base
、exception
、freemarker
、redis
,以及一個util工具包,還有一個validator
參數校驗分組接口包。
base包
base即基礎,也就是抽取通用部分封裝成的基礎類,讓其他類去繼承之,減少重複代碼。這裏有通用Mapper的配置(BaseMapper
),以及service層通用的方法(BaseService
),而BaseController
中則有權限異常處理、時間格式化和ajax請求的判斷。
至於下面的三個Currentxxx則是後臺管理系統的菜單、角色、用戶實體類。剩下兩個不知道…
exception包
該包下是自定義的一些異常,以及統一異常處理類GlobalExceptionHandler
。
freemarker包
該包下是Freemarker模板引擎的一些配置。
redis包
redis的一些常用方法封裝,例如get\set\del
util包
這裏有很多工具類,其中的功能大都可以顧名思義。這裏就不詳細展開講了。
validator
校驗分組接口定義。有時候一個類對於不同的接口需要定義多種不同的校驗方式,例如add不需要id,而update需要id,這裏可以使用接口區別校驗。
pom.xml
每個Maven模塊都會帶的xml配置文件,用於引入依賴、管理多模塊依賴。以下就不再敘述。
len-sys
sys是系統的縮寫。這裏也就是系統運行所依賴的類集合。文件結構如下:
學過Javaweb三層架構的同學應該很清楚了,controller、service、mapper即分別對應三層。而entity是實體類。下面再來看看core
包
core包
-
annotation
註解定義,這裏是日誌註解的定義。用於接口上,採集日誌。
-
BootListener
監聽器,用於監聽定時任務執行情況、bean初始化情況以及Servlet初始化情況。
-
filter
過濾器,包括後臺管理系統登錄所需的驗證碼攔截、校驗用戶是否已授權
-
quartz
定時任務定義、配置,具體不說。
-
shiro
shiro安全框架登錄認證
LoginRealm
定義,以及Principal
用戶主體、RetryLimitCredentialsMatcher
驗證器,限制嘗試登陸次數,防止暴力破解
resources
看完core我們繼續看resources
,學過SpringBoot的同學都知道這是放資源文件的地方。
-
ftl
該包是存放ftl後綴的模塊頁面的文件夾
-
mapper
存放mapper.xml文件的文件夾
-
plugin
存放前端使用的框架的文件夾,例如
bookstrap
、layui
…
len-web
該模塊是也就是我們所說的controller層的一些配置以及application.yml
的配置。
挑幾個懂的出來說說
- CorsConfig:配置跨域
- pageHelperConfig:此方案可替代 application.yml中 pagehelper配置
- SwaggerConfig:Swagger接口文檔配置
- WebMavConfig:攔截器資源放行以及圖片上傳路徑定義
- TransactionalConfig:事務配置
- ShiroConfig:Shiro安全框架配置
- DruidConfig:數據源Druid配置
差不多就這些吧。可以自己點進源碼詳細看看
自己擴展的模塊
我們使用lenosp腳手架當然是爲了方便開發,而我們開發可以自己新開模塊再開發,而不要和腳手架自帶的模塊混雜在一起,顯得混亂。
這五個模塊其實很好理解了,就是三層架構拆分成了Maven多模塊開發,不用多說了吧。
後記
最後,再講講幾個注意的點。
- 因爲用到了Maven多模塊開發,所以各模塊的依賴關係要理清楚。否則編譯運行可能都不能通過
- 啓動在len-web中的
Application
啓動類的主方法中 - 數據庫等yml配置也在len-web模塊
至此,我們可以安心開發了0.0