SpringBoot - 第三章 | 目錄結構
目錄結構
專案的目錄結構建置,基本上照著大原則去做初步的分類,像是應用主類、實體層、邏輯層、Web層;而在不同的專案中,常常會再根據自己的開發需求、功能…等等去做目錄結構的細分。
典型範例
- root package結構:com.example.myproject
- 應用主類Application.java置於root package下,通常我們會在應用主類中做一些框架配置掃描等配置,放在root package下可以幫助程序減少手工配置來加載到我們希望被Spring加載的內容
- 實體層(Entity)與資料訪問層(Repository)置於com.example.myproject.domain下
- 邏輯層(Service)置於com.example.myproject.service下
- Web層(web)置於com.example.myproject.web下
1 | com |
註:以上的典型範例參考了 程序猿DD-翟永超 的 Spring Boot工程结构推荐 文章。
常用目錄結構
程式碼層的目錄結構
根目錄 com.jj (一般為反向的域名格式,如域名為jj.com,而目錄結構com.jj做為開頭)
啟動類 (Application.java),推薦放置根目錄com.jj下
1
└── com.jj
實體層 (Entity)
1
2
3
4├── com.jj.entity (實體)
├── com.jj.model (模型)
├── com.jj.domain (JPA項目)
└── com.jj.pojo (mybatis項目)
Entity:包中的類是必須和資料庫相對應的。
Model:是為前端頁面提供資料和資料校驗的。
Domain:字面意思是域的意思。
POJO:POJO是Plain OrdinaryJava Object的縮寫,但它通指沒有使用Entity Beans的普通java對象,可以把POJO作為支持業務邏輯的協助類。
註:以上這麼多的說明,如需更詳細的了解 文章(1)、文章(2) ,最後建議參照 Spring Boot工程结构推荐 來做配置。
資料訪問對象 (Data Access Object 簡稱:DAO)
1
2
3├── com.jj.repository (JPA項目)
└── com.jj.mapper (mybatis項目)
註:它是一個面向對象的資料庫接口,負責持久層的操作,為邏輯層提供接口,主要用來封裝對資料庫的訪問邏輯介面層 (Service)
1
└── com.jj.service
邏輯實作層 (Service Implements)
1
2└── com.jj.service.impl
註:使用IntelliJ IDEA的推薦使用com.jj.serviceImplWeb層 (Controller)
1
2
3
4└── com.jj.controller
註:有時候我在這邊會再細分頁面的處理和單純的API
├── com.jj.controller.web
└── com.jj.controller.api共用工具類 (utils)
1
2└── com.jj.utils
註:共用性很高的類,例 DateUtil共用工具類 (utils)
1
2└── com.jj.utils
註:共用性很高的類,例 DateFormat資料傳輸層 (Data Transfer Object 簡稱:DTO)
1
2└── com.jj.dto
註:資料傳輸對象(DTO)用於封裝多個實體類(domain)之間的關係,不破壞原有的實體類結構
靜態資源的目錄結構
根目錄 resources
配置文件
1
2resources/application.yml
註:官方推薦使用.yml來做撰寫,當然你也可以用.properties靜態資源目錄
1
2
3
4
5resources/static/
註:用於存放css、js、images等,基本上我會再細分
├── resources/static/css
├── resources/static/js
└── resources/static/images模板目錄
1
2
3resources/templates/
註:Spring Boot提供了默認配置的模板引擎主要有以下幾種,官方建議使用這些模板引擎,避免使用JSP
Thymeleaf、FreeMarker、Velocity、Groovy、Mustachemybatis映射文件
1
resources/mapper/
目錄結構圖
這邊提供的目錄結構圖只是做個簡單示意,並沒有實際撰寫整個程式碼