种子项目详解
引言
在上一篇文章簡單講解了種子項目搭建,但是項目搭建起來是為了方便我們后續開發的。因此了解整個項目的架構,以及各個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
總結
- 上一篇: 备战2019年数据库系统工程师从什么时候
- 下一篇: PHP解决跨域问题