第二章:建立第一個 Spring Boot 專案
2.1 前言:從這裡開始你的 Spring Boot 之旅
歡迎來到 Spring Boot 的世界!在這一章節中,我們將一步一步地建立你的第一個 Spring Boot 專案。這個過程將讓你體驗到 Spring Boot 的設計哲學:約定優於配置(Convention over Configuration)。Spring Boot 的目標是讓你可以快速啟動並運行應用程式,而不需要處理繁瑣的 XML 配置。
建立 Spring Boot 專案有多種方式,我們將介紹最常用的幾種方法。無論你選擇哪種方式,最終都會得到一個結構一致、可以立即運行的專案。讓我們開始吧!
2.2 使用 Spring Initializr 建立專案
Spring Initializr(https://start.spring.io/)是 Spring 官方提供的專案生成工具,它是建立 Spring Boot 專案最簡單、最推薦的方式。這個工具允許你通過 Web 界面或命令行來生成專案骨架。
讓我們通過 Web 界面來建立專案:
- 打開瀏覽器,訪問 https://start.spring.io/
- 選擇專案類型:Maven Project(推薦)或 Gradle Project
- 選擇語言:Java
- 選擇 Spring Boot 版本:選擇最新的穩定版本(如 3.2.0 或 4.0.0)
- 填寫專案元數據:
- Group:你的組織域名反轉(如 com.example)
- Artifact:專案名稱(如 my-first-app)
- Name:專案顯示名稱(通常與 Artifact 相同)
- Description:專案描述
- Package Name:套件名稱(通常為 Group.Artifact)
- 選擇打包方式:Jar(推薦)或 War
- 選擇 Java 版本:17 或 21
- 點擊「ADD DEPENDENCIES」按鈕,添加必要的依賴:
- Spring Web:用於構建 Web 應用程式
- Spring Data JPA:用於資料庫操作
- PostgreSQL Driver:PostgreSQL 資料庫驅動
- Spring Boot DevTools:開發工具(可選但推薦)
- 點擊「GENERATE」按鈕下載專案壓縮檔
下載完成後,將壓縮檔解壓到你的工作目錄。讓我們用 IntelliJ IDEA 打開這個專案。
2.3 IntelliJ IDEA 整合設定
IntelliJ IDEA 是開發 Spring Boot 應用程式的最佳選擇,它提供了深度的 Spring 支援,包括自動完成、程式碼導航、重構工具等。讓我們來設定你的開發環境。
首次在 IntelliJ IDEA 中打開專案時,IDE 會自動識別 Maven 專案並下載所需的依賴。這個過程可能需要幾分鐘,具體時間取決於你的網絡速度。
以下是一些推薦的 IDE 設定,可以提升你的開發效率:
首先,啟用自動匯入(Auto Import)功能。這樣每當你修改 pom.xml 文件時,IDEA 會自動更新專案依賴。
其次,配置 JDK。確保 IDEA 使用正確的 JDK 版本:打開「File」→「Project Structure」,在「Project Settings」→「Project」中選擇正確的 JDK 版本。
第三,啟用 Spring Boot 支援。在「File」→「Settings」→「Plugins」中確保 Spring Boot 插件已啟用。
第四,配置 Lombok 支援。如果你使用了 Lombok,需要確保 Lombok 插件已安裝並啟用注解處理。
2.4 專案結構詳解
讓我們來詳細了解 Spring Boot 專案的標準結構。這個結構是經過精心設計的,遵循了 Spring 的最佳實踐。
my-first-app/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── myfirstapp/
│ │ │ ├── MyFirstAppApplication.java
│ │ │ ├── controller/
│ │ │ ├── service/
│ │ │ ├── repository/
│ │ │ ├── entity/
│ │ │ └── config/
│ │ └── resources/
│ │ ├── application.properties
│ │ ├── application.yml
│ │ └── static/
│ │ └── templates/
│ └── test/
│ └── java/
│ └── com/
│ └── example/
│ └── myfirstapp/
├── pom.xml
└── mvnw
這個結構的每個部分都有其特定的用途:
src/main/java 目錄包含你的 Java 源代碼。這是放置所有 Java 類的地方。標準的做法是按照套件名稱組織類,這有助於保持程式碼的結構化和可維護性。
src/main/resources 目錄包含非 Java 資源,如配置文件、靜態資源(CSS、JavaScript、圖片)和模板文件。Spring Boot 會自動載入這個目錄下的資源。
src/test/java 目錄包含測試程式碼。Spring Boot 測試支援讓你可以輕鬆地編寫單元測試和整合測試。
pom.xml 是 Maven 的專案對象模型文件,定義了專案的依賴、插件和其他配置。
2.5 第一個 Spring Boot 應用程式
現在讓我們創建你的第一個 Spring Boot 應用程式。這將是一個簡單的「Hello World」API,返回一個問候訊息。
首先,修改主應用程式類:
package com.example.myfirstapp;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyFirstAppApplication {
public static void main(String[] args) {
SpringApplication.run(MyFirstAppApplication.class, args);
}
}
這個類是 Spring Boot 應用程式的入口點。@SpringBootApplication 註解標記這是一個 Spring Boot 應用程式,並啟用自動配置和元件掃描。main 方法使用 SpringApplication.run() 來啟動應用程式。
現在,讓我們創建一個簡單的 REST 控制器:
package com.example.myfirstapp.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello(
@RequestParam(name = "name", defaultValue = "World") String name) {
return String.format("Hello, %s! Welcome to Spring Boot!", name);
}
@GetMapping("/")
public String home() {
return "<h1>Welcome to Spring Boot!</h1>" +
"<p>Visit <a href=\"/hello?name=Spring\">/hello?name=Spring</a> for a greeting.</p>";
}
}
這個控制器定義了兩個端點:/ 返回一個簡單的 HTML 頁面,/hello 接受一個可選的 name 參數並返回問候訊息。
2.6 配置 PostgreSQL 資料庫連接
在這個章節中,我們將學習如何配置 Spring Boot 連接到 PostgreSQL 資料庫。這個配置將在我們的應用程式中使用。
首先,確保你已經在 PostgreSQL 中創建了資料庫。你可以通過 psql 命令列工具或 pgAdmin 來完成:
-- 登入 PostgreSQL
psql -U postgres
-- 創建資料庫
CREATE DATABASE myapp_db;
-- 創建用戶(可選)
CREATE USER myapp_user WITH ENCRYPTED PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE myapp_db TO myapp_user;
-- 連接到資料庫並創建資料表
\c myapp_db
-- 授權用戶訪問 public schema
GRANT ALL ON SCHEMA public TO myapp_user;
現在,讓我們配置 Spring Boot 連接到 PostgreSQL。在 src/main/resources/application.properties 文件中添加以下配置:
# PostgreSQL 資料庫配置
spring.datasource.url=jdbc:postgresql://localhost:5432/myapp_db
spring.datasource.username=myapp_user
spring.datasource.password=your_password
spring.datasource.driver-class-name=org.postgresql.Driver
# JPA/Hibernate 配置
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
# 伺服器配置
server.port=8080
# 日誌配置
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
這個配置包含以下重要設定:
spring.datasource.url 是 JDBC 連接 URL,格式為 jdbc:postgresql://主機:埠/資料庫名稱。
spring.datasource.username 和 spring.datasource.password 是資料庫的登入憑據。
spring.datasource.driver-class-name 指定了 JDBC 驅動程式類別。
spring.jpa.hibernate.ddl-auto=update 讓 Hibernate 自動根據實體類創建或更新資料表結構。這在開發環境中非常方便,但在生產環境中建議使用 validate 或 none。
spring.jpa.show-sql=true 讓 Hibernate 在執行 SQL 語句時輸出日誌,這對於除錯很有幫助。
2.7 運行和測試應用程式
現在讓我們運行並測試你的第一個 Spring Boot 應用程式。有多種方式可以運行 Spring Boot 應用程式。
通過 IDE 運行:在 IntelliJ IDEA 中,找到 MyFirstAppApplication 類,右鍵點擊並選擇「Run 'MyFirstAppApplication.main()'」。Spring Boot 會啟動內嵌的 Tomcat 伺服器(預設端口 8080),並載入你的應用程式。
通過命令列運行:在專案根目錄下執行以下命令:
# 使用 Maven 運行
./mvnw spring-boot:run
# 或者先打包再運行
./mvnw package
java -jar target/my-first-app-0.0.1-SNAPSHOT.jar
應用程式啟動後,你可以通過瀏覽器或 curl 測試 API:
# 測試首頁
curl http://localhost:8080/
# 測試 Hello API(使用預設值)
curl http://localhost:8080/hello
# 測試 Hello API(使用自訂名稱)
curl http://localhost:8080/hello?name=Spring
# 使用 URL 編碼的特殊字符
curl "http://localhost:8080/hello?name=%E5%BC%80%E5%8F%91%E8%80%85"
如果一切正常,你應該能看到類似以下的輸出:
Hello, World! Welcome to Spring Boot!
# 或
Hello, Spring! Welcome to Spring Boot!
恭喜你!你已經成功創建並運行了你的第一個 Spring Boot 應用程式。在接下來的章節中,我們將深入學習 Spring Boot 的核心概念,並構建一個更完整的資料庫驅動應用程式。
2.8 開發環境的最佳實踐
在結束這一章之前,讓我們討論一些 Spring Boot 開發的最佳實踐,這些實踐可以幫助你成為更高效的 Spring Boot 開發者。
首先是使用 Spring Boot DevTools。這個工具提供了許多開發時的便利功能,包括:
- 快速重啟:當類路徑中的文件發生變化時,應用程式會自動重啟
- LiveReload:自動刷新瀏覽器(需要瀏覽器擴展)
- 遠程開發:支援遠程除錯和更新
要啟用 DevTools,只需在 pom.xml 中添加依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
其次是使用 profiles 來管理不同環境的配置。你可以創建多個配置文件,如 application-dev.properties 用於開發環境,application-prod.properties 用於生產環境。然後通過 spring.profiles.active 來指定使用哪個配置。
第三是善用 application.yml。相比於 application.properties,YAML 格式更加結構化和易讀,特別適合複雜的配置。
第四是定期更新 Spring Boot 版本。Spring Boot 團隊會定期發布更新版本,這些更新通常包含 bug 修復、性能改進和安全修補。使用最新穩定版本可以讓你受益於這些改進。
Top comments (0)