以下是一個典型的 Java Spring Boot 項目目錄結構規范示例,結合了分層架構和模塊化設計的最佳實踐:
text
復制
下載
src/ ├── main/ │ ├── java/ │ │ └── com/ │ │ └── example/ │ │ └── myapp/ │ │ ├── MyAppApplication.java # 主啟動類 │ │ │ │ │ ├── config/ # 配置類 │ │ │ ├── SwaggerConfig.java # Swagger 配置 │ │ │ ├── SecurityConfig.java # 安全配置 │ │ │ └── WebMvcConfig.java # MVC 配置 │ │ │ │ │ ├── controller/ # 控制器層 │ │ │ ├── UserController.java │ │ │ └── ProductController.java │ │ │ │ │ ├── service/ # 服務層 │ │ │ ├── UserService.java │ │ │ ├── impl/ # 服務實現 │ │ │ │ ├── UserServiceImpl.java │ │ │ │ └── ProductServiceImpl.java │ │ │ │ │ ├── repository/ # 數據訪問層 │ │ │ ├── UserRepository.java # JPA 接口 │ │ │ └── ProductRepository.java │ │ │ │ │ ├── model/ # 數據模型 │ │ │ ├── entity/ # 數據庫實體 │ │ │ │ ├── User.java │ │ │ │ └── Product.java │ │ │ │ │ │ │ ├── dto/ # DTO 對象 │ │ │ │ ├── request/ # 請求對象 │ │ │ │ │ ├── CreateUserRequest.java │ │ │ │ │ └── UpdateProductRequest.java │ │ │ │ └── response/ # 響應對象 │ │ │ │ │ │ │ └── enums/ # 枚舉類 │ │ │ │ │ ├── exception/ # 異常處理 │ │ │ ├── GlobalExceptionHandler.java │ │ │ └── CustomException.java │ │ │ │ │ ├── util/ # 工具類 │ │ │ ├── DateUtils.java │ │ │ └── StringUtils.java │ │ │ │ │ ├── security/ # 安全模塊 │ │ │ ├── JwtUtils.java │ │ │ └── UserDetailsServiceImpl.java │ │ │ │ │ └── scheduler/ # 定時任務 │ │ └── ReportGenerationScheduler.java │ │ │ └── resources/ │ ├── static/ # 靜態資源 │ ├── templates/ # 模板文件 │ ├── application.yml # 主配置文件 │ ├── application-dev.yml # 開發環境配置 │ ├── application-prod.yml # 生產環境配置 │ └── db/ │ ├── migration/ # 數據庫遷移腳本(Flyway/Liquibase) │ │ └── V1__init_schema.sql │ └── data.sql # 初始數據 │ └── test/ # 測試代碼└── java/└── com/└── example/└── myapp/├── controller/│ └── UserControllerTest.java├── service/│ └── UserServiceTest.java└── integration/ # 集成測試└── UserIntegrationTest.java
核心目錄說明:
-
主啟動類
-
位于根包下,用于啟動 Spring Boot 應用
-
-
分層結構
-
controller
: 處理 HTTP 請求,調用 Service 層 -
service
: 業務邏輯層,接口與實現分離 -
repository
: 數據訪問層(JPA/Hibernate) -
model
: 數據模型定義(DTO/Entity)
-
-
配置類
-
集中管理 Spring 配置(安全、Swagger、數據庫等)
-
-
異常處理
-
統一異常處理和自定義異常定義
-
-
資源文件
-
application-*.yml
: 多環境配置文件 -
db/migration/
: 數據庫遷移腳本(推薦使用 Flyway)
-
-
測試目錄
-
分層測試結構(單元測試/集成測試)
-
最佳實踐建議:
-
包命名規范
-
使用全小寫字母,避免使用下劃線
-
按功能模塊分包(如:
com.example.myapp.order
)
-
-
代碼分離原則
-
Controller 保持簡潔(僅處理參數校驗和響應封裝)
-
業務邏輯集中在 Service 層
-
數據訪問邏輯在 Repository 層
-
-
DTO 使用規范
-
使用單獨的 DTO 進行接口數據傳輸
-
避免直接暴露 Entity 對象給前端
-
-
版本控制
-
數據庫遷移腳本使用版本號管理
-
API 版本控制(如:
/api/v1/users
)
-
-
測試規范
-
測試類命名:被測試類名 + Test 后綴
-
使用?
@SpringBootTest
?進行集成測試 -
使用?
@Mock
?和?@InjectMocks
?進行單元測試
-
根據項目復雜度可適當調整結構,例如增加以下目錄:
-
aspects/
: AOP 切面 -
client/
: 外部服務調用客戶端 -
messaging/
: 消息處理(Kafka/RabbitMQ) -
validation/
: 自定義校驗邏輯