Spring Boot 工程結構推薦

本文推薦一種 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/modulejava 代碼根路徑,只存放應用主類 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 一致。
          • managerservice 通用能力的下沉并封裝調用外部接口邏輯,供 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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。