本文推薦一種 Spring Boot 工程結構,根據筆者日常工作積累。
src
| -- assembly
| -- main
| | -- bin
| | -- java
| | | -- com
| | | | -- organization
| | | | | -- project
| | | | | | -- module
| | | | | | | -- config
| | | | | | | -- controller
| | | | | | | -- constant
| | | | | | | -- dao
| | | | | | | | -- impl
| | | | | | | -- domain
| | | | | | | | -- bo
| | | | | | | | -- dto
| | | | | | | | -- po
| | | | | | | | -- vo
| | | | | | | -- exception
| | | | | | | -- manager
| | | | | | | | -- impl
| | | | | | | -- service
| | | | | | | | -- impl
| | | | | | | -- task
| | | | | | | -- util
| | | | | | | -- XXXApplication.java
| | -- lib
| | -- resources
| | | -- config
| -- test
LICENSE.txt
NOTICE.txt
README.txt
說明:
-
src
-
assembly
:存放 Maven Assembly 功能所需的文件。 -
main
-
bin
:存放啟動應用腳本,Spring Boot 應用通常打包為jar
包,運行時使用java -jar
命令,如果需要通過啟動命令配置一些參數,則直接使用java -jar
命令會不方便,通常會編寫 SHELL 或 Python 腳本執行安裝、啟動、檢查狀態、停止、卸載等日常運維功能。 -
java
-
com/organization/project/module
:java
代碼根路徑,只存放應用主類XXXApplication.java
。-
config
:存放啟動配置類,如自定義DataSource
配置。 -
controller
:開放 API 訪問層,也可命名為handler
。 -
constant
:存放共享自定義常量類,注意每層使用的常量類放在各自包下,譬如controller
層使用的常量類且不共享給其它層使用,則在controller
下定義一個子包constant
存放。 -
dao
:存放數據訪問類(Data Access Object)接口定義。-
impl
:存放數據訪問類(Data Access Object)接口實現。
-
-
domain
:存放領域模型。-
bo
:Business Object:業務對象。 -
dto
:Data Transfering Object,業務系統間傳輸的對象。 -
po
:Persistent Object,即 Data Object,與數據表模型一一對應,不用do
定義包名是因為do
是關鍵字。 -
query
:Query Object,前端傳來的封裝查詢參數的對象。 -
vo
:View Object,返回給前端的對象。
-
-
exception
:存放共享自定義異常類,注意每層使用的異常類放在各自包下,同constant
一致。 -
manager
:service
通用能力的下沉并封裝調用外部接口邏輯,供service
層調用,存放接口定義。-
impl
:存放manager
接口實現。
-
-
service
:封裝核心業務處理邏輯供controller
層調用,存放接口定義。-
impl
:存放service
接口實現。
-
-
task
:存放自定義任務,如定時任務等,也可命名為job
。 -
util
:存放工具類。
-
-
-
lib
:存放運行應用需要的第三方庫文件,譬如指定運行的 JRE 版本,如應用需要使用 JRE 11 啟動運行,但是部署服務器上JAVA_HOME
指向 JRE 8 安裝路徑,則可以將需要的 JRE 11 安裝包存放在此目錄下。 -
resources
:存放啟動應用所需的資源文件。-
config
:存放啟動應用所需的配置類資源文件。
-
-
-
LICENSE.txt
NOTICE.txt
README.txt