DEV Community

Cyrus Tse
Cyrus Tse

Posted on

Spring Boot 4 入門教學 - Part 2 (建立第一個 Spring Boot 專案)

第二章:建立第一個 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 界面來建立專案:

  1. 打開瀏覽器,訪問 https://start.spring.io/
  2. 選擇專案類型:Maven Project(推薦)或 Gradle Project
  3. 選擇語言:Java
  4. 選擇 Spring Boot 版本:選擇最新的穩定版本(如 3.2.0 或 4.0.0)
  5. 填寫專案元數據:
    • Group:你的組織域名反轉(如 com.example)
    • Artifact:專案名稱(如 my-first-app)
    • Name:專案顯示名稱(通常與 Artifact 相同)
    • Description:專案描述
    • Package Name:套件名稱(通常為 Group.Artifact)
  6. 選擇打包方式:Jar(推薦)或 War
  7. 選擇 Java 版本:17 或 21
  8. 點擊「ADD DEPENDENCIES」按鈕,添加必要的依賴:
    • Spring Web:用於構建 Web 應用程式
    • Spring Data JPA:用於資料庫操作
    • PostgreSQL Driver:PostgreSQL 資料庫驅動
    • Spring Boot DevTools:開發工具(可選但推薦)
  9. 點擊「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
Enter fullscreen mode Exit fullscreen mode

這個結構的每個部分都有其特定的用途:

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);
    }
}
Enter fullscreen mode Exit fullscreen mode

這個類是 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>";
    }
}
Enter fullscreen mode Exit fullscreen mode

這個控制器定義了兩個端點:/ 返回一個簡單的 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;
Enter fullscreen mode Exit fullscreen mode

現在,讓我們配置 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
Enter fullscreen mode Exit fullscreen mode

這個配置包含以下重要設定:

spring.datasource.url 是 JDBC 連接 URL,格式為 jdbc:postgresql://主機:埠/資料庫名稱

spring.datasource.usernamespring.datasource.password 是資料庫的登入憑據。

spring.datasource.driver-class-name 指定了 JDBC 驅動程式類別。

spring.jpa.hibernate.ddl-auto=update 讓 Hibernate 自動根據實體類創建或更新資料表結構。這在開發環境中非常方便,但在生產環境中建議使用 validatenone

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
Enter fullscreen mode Exit fullscreen mode

應用程式啟動後,你可以通過瀏覽器或 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"
Enter fullscreen mode Exit fullscreen mode

如果一切正常,你應該能看到類似以下的輸出:

Hello, World! Welcome to Spring Boot!

# 或

Hello, Spring! Welcome to Spring Boot!
Enter fullscreen mode Exit fullscreen mode

恭喜你!你已經成功創建並運行了你的第一個 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>
Enter fullscreen mode Exit fullscreen mode

其次是使用 profiles 來管理不同環境的配置。你可以創建多個配置文件,如 application-dev.properties 用於開發環境,application-prod.properties 用於生產環境。然後通過 spring.profiles.active 來指定使用哪個配置。

第三是善用 application.yml。相比於 application.properties,YAML 格式更加結構化和易讀,特別適合複雜的配置。

第四是定期更新 Spring Boot 版本。Spring Boot 團隊會定期發布更新版本,這些更新通常包含 bug 修復、性能改進和安全修補。使用最新穩定版本可以讓你受益於這些改進。

Top comments (0)