Day 4 - 第一個 Spring Boot 程式

古古

2023/11/04


哈囉大家好,我是古古

在上兩篇文章中,有先介紹如何在 Mac 和 Windows 中架設開發環境,那麼接著這篇文章,就會使用前面所安裝的工具,建立你的第一個 Spring Boot 程式

啟用 IntelliJ IDEA Ultimate #

在上兩篇文章中,有先帶大家安裝了 IntelliJ IDEA Ultimate (付費版) 的程式,點擊兩下打開 IntelliJ 之後,IntelliJ 會跳出這個視窗,要求大家登入帳號,並且確認該帳號是否已啟用 IntelliJ 的付費版本

如果要使用 30 天的免費試用的話,只需要點擊右上角的「Start trial」,然後點擊下方的「Start Trial」按鈕,就可以取得 30 天的免費試用了

補充:點擊 Start Trial 按鈕之後,瀏覽器會跳出一個 IntelliJ 的頁面,問你要不要訂閱電子報,這部分可訂閱可不訂閱,不過不管有沒有訂閱,只要直接回到 IntelliJ 程式,都是可以正常啟用 30 天試用版成功的

創建第一個 Spring Boot 程式 #

啟用 30 天試用版成功之後,就可以開始來創建 Spring Boot 程式了

點擊 IntelliJ 中間的「New Project」,就可以開始去創建一個新的 Spring Boot 程式

設定 Spring Boot 程式 #

接著 IntelliJ 會跳出這個視窗,要我們進行 Project 設定,大家可以先點擊左側側邊欄的「Spring Initializr」,表示我們要創建的是 Spring Boot 的程式,接著右邊就是跟著下圖一樣,選擇一樣的設定即可

這邊也補充一下,大家在設定上圖中的「3. JDK」時,可能會找不到 temurin-17 在哪裡,這時只要點開 JDK 那個選項,然後在下方會有一個「Detected SDKs」的區塊,這裡就是你電腦上有安裝的 Java 版本,只要選中其中的「temurin-17.jdk」就可以了

另外我們也可以回頭來看一下這個 Project 設定中,右邊的這些值分別代表什麼意思

  • Name:這個 Spring Boot 程式的資料夾名字
  • Location:這個 Spring Boot 程式預計創建出來的位置,預設是放在桌面上
  • Language:使用哪種語言來開發 Spring Boot 程式,預設是 Java
  • Type:選擇要使用哪種工具來構建 Spring Boot 程式,這部分比較複雜,因此先照著選 Maven 即可
  • Group、Artifact、Package name:和上面的 Maven 有關,一樣是比較複雜所以可以先跳過不理他
  • JDK、Java:選擇想要使用的 Java 版本
  • Packaging:打包 Spring Boot 的方式,預設是 Jar,這部分一樣是比較複雜(牽涉到 Tomcat),所以也是可以先跳過不理他

而當大家都設定好之後,就可以按下 Next 繼續

選擇要載入的 Spring Boot 功能 #

進到下一個視窗之後,就可以在這裡選擇 Spring Boot 的版本,以及想要載入哪些功能進來

像是在左上方的紅框處,就可以去選擇 Spring Boot 的版本,大家可以直接使用預設的最新版即可,不用特別去改變

而在下方的部分,則是可以去選擇要載入哪些功能到這個 Spring Boot 程式裡面,這裡大家先展開 Web,然後勾選裡面的「Spring Web」即可

完成之後可以點擊右下角的 Create,完成 Spring Boot 程式的創建

IntelliJ 的操作介面 #

創建好 Spring Boot 程式後,IntelliJ 會開啟一個視窗,根據我們剛剛的設定,去創建這個 Spring Boot 程式出來,這時候右下角的進度條會開始跑,第一次創建會需要比較長的,並且需要確保網路的暢通(會下載許多 Spring Boot 的 library 下來),等到右下角的進度條跑完之後,就創建完成了(約需要 3-5 分鐘左右)

在 Spring Boot 程式創建的過程中,大家也可以先熟悉一下 IntelliJ 的軟體介面

  • 左側的部分是側邊欄,呈現了這個 demo 資料夾中的所有程式
  • 右側則是程式的編輯區,只要在左側側邊欄對著檔案點擊兩下,就可以將程式開啟到右邊的編輯區開始編輯

補充:IntelliJ 的編輯區是會自動存檔的,因此大家不用擔心寫程式寫到一半沒存檔怎麼辦,揪甘心😆

另外也補充一下,因為 IntelliJ 預設的字體還滿小的,所以建議大家可以調大程式編輯區的字體,只要點擊左上方的「Preferences」,就可以叫出偏好設定,接著點擊 Editor 中的 Font,就可以在右側設定編輯區的字型、以及字體大小了!

第一個 Spring Boot 程式 #

設定好 IntelliJ 的偏好設定、並且確認右下角的進度條跑完之後,就可以開始來寫我們的第一個 Spring Boot 程式了

首先展開左側的資料夾,可以看到在 src/main/java/com 底下,有一個 DemoApplication.class 的檔案,點擊兩下開啟這個檔案之後,在右側就可以看到他的內容

而在這個 DemoApplication 的程式裡面,最重要的就是第 6 行的 @SpringBootApplication 的程式

第一次接觸 Spring 的大家,可能會覺得第 6 行這種前面帶有小老鼠 @ 的程式很奇怪,不過這種前面帶有小老鼠的寫法,在 Java 裡面稱作 annotation,中文是翻譯為「標註」或是「註解」

補充:一般口語上會稱呼這種前面帶有小老鼠的程式為 annotation,不過由於版面因素,後續都會使用「註解」來稱呼

第 6 行程式的這種寫法,在一般的 Java 程式裡面比較少看到,不過在 Spring Boot 裡面卻非常常見,所以在後續的文章中,也會介紹到非常多好用的 annotation (註解) 給大家

第一次接觸註解的大家,基本上可以把註解想像成是賦予一個新的功能,不同的註解所提供的功能不一樣,並且他們的使用方法也會有點不太一樣

像是第 6 行這個 @SpringBootApplication,他的用法是要加在 class 上面,而他的用途,則是表示這一個 DemoApplication 的 class,是這個 Spring Boot 程式的啟動入口

也因為我們有在第 6 行加上 @SpringBootApplication,所以在第 7 行的左邊,才會出現一個播放鍵的符號,讓我們可以直接點擊這個播放鍵,去運行這個 Spring Boot 程式

所以到這邊為止,我們已經大致了解了 @SpringBootApplication 的用途(就是將該 class 變成 Spring Boot 的啟動入口),以及如何在 IntelliJ 中運行 Spring Boot 程式了,不過在我們真的去運行這個 Spring Boot 程式之前,我們可以先來寫一些 Java 程式在裡面

添加 demo 程式 #

大家可以在 com.example.demo 這個 package 上點擊右鍵,然後選擇 New,接著選擇 Java class,這樣就可以去創建一個 Java class 出來

然後我們將這個 class 的名字取名成 MyController

接著在這個 MyController 裡面,添加下列的程式

@RestController
public class MyController {
    
    @RequestMapping("/test")
    public String test() {
        System.out.println("Hi!");
        return "Hello World";
    }
}

補充:如果複製貼上發現 @RestController@RequestMapping 的 library 沒有自動載入進來的話,建議可以改成是一行一行手動輸入程式

寫完這段程式之後,不了解 @RestController@RequestMapping 這兩個註解的意思是正常的,這兩個註解的用途,會在後面提到「Spring MVC」章節的時候再做介紹,所以這裡大家就先照著寫就好

運行 Spring Boot 程式 #

當寫好上述的 MyController 程式之後,接著就可以回到 DemoApplication 這個 class,點擊第 7 行的播放鍵去運行 Spring Boot 程式了!

只要使用左鍵點擊第 7 行的播放鍵,然後選擇 Run DemoApplication,就可以去運行這個 Spring Boot 程式

點擊運行之後,這時候下面就會顯示出一個 console 的視窗,在這個 console 的最一開始會出現一個 Spring 的 logo,接著後面就是實時呈現出 Spring Boot 程式的運行結果

只要大家看到最後有一行「Started DemoApplication in 1.024 seconds」出現的時候,就表示你的 Spring Boot 程式運行成功了!

當 Spring Boot 程式運行成功之後,就可以打開 Google 瀏覽器,然後在裡面輸入 http://localhost:8080/test ,接著按下 Enter 鍵

這時候如果頁面中有呈現「Hello World」的字樣的話,就表示你的第一個 Spring Boot 程式運作成功了!!讚讚讚!!

所以,剛剛我們都做了什麼? #

那到這邊,我們可以回頭來看一下我們剛剛都做了什麼,我們剛剛有去新增了一個 MyController 的 class,然後在裡面加上一個 test() 方法,並且在裡面去回傳一個 Hello World 的字串,同時也添加了兩個註解 @RestController@RequestMapping

那這段程式的運作邏輯是這樣子的,當我們在 Google 瀏覽器輸入 http://localhost:8080/test 時,實際上 Spring Boot 程式就會去執行 MyController 裡面的 test() 方法裡面的程式,所以這也是為什麼在 console 上會印出一行「Hi!」,並且這個 test() 方法的返回值「Hello World」字串,就會顯示在 Google 瀏覽器上面

而之所以能達到這個效果,就是多虧了 @RestController@RequestMapping 這兩個註解的幫助

不過到目前為止,大家還不用先太深入了解這兩個註解的用法,只要先知道「當我們在 Google 中輸入 http://localhost:8080/test 時,Spring Boot 程式就會去執行這個 test() 方法就可以了」

至於 @RestController@RequestMapping 這兩個註解的實際用法,會在後續的「Spring MVC」文章中再做介紹

補充:如果想快轉到 Spring MVC 的部分,可以直接跳到 Day 13 ~ Day 23 的文章介紹

總結 #

所以到這邊為止,大家就成功的去創建出第一個 Spring Boot 程式了,恭喜恭喜!!透過這個練習,其實也是讓大家可以去感受一下,用 Spring Boot 寫後端程式是真的很方便,只需要寫不到 10 行的程式,就可以快速運行起一個後端程式了,效率真的是 up up up(自從我用了 Spring Boot,考試都考 💯 分)

那麼從下一篇文章,我們就會開始來介紹 Spring 框架中的一個非常重要的特性:IoC,那麼我們就下一篇文章見啦!

相關連結 #