【Java】SpringBoot 專案初始建置

閱讀時間約 4 分鐘

前言

以Java的職缺而言,Spring Boot可以說是主流使用的後端框架。說來慚愧,公司內部的系統只有近年新專案才有陸續以Spring Boot進行開發,因此想學就只好靠自己囉!

慶幸的是公司有Hahow for business 的企業合作,一系列完整的入門課程可以跟著慢慢看。

實際上,平時工作流程已經是git版控、maven管理套件,三不五時應付User端資料撈取,唯一的轉換只是熟悉框架及制式的開發規範依循,其他仰賴平時trace code跟debug養成的能力,搭配兩倍速講解後自行實作,快速上手新框架並不算太難。

時間點很剛好,在年初的時候freeCodeCamp也上傳了完整課程,講解的很深入。目前先看完了前8小時的基礎,筆記一下整體架構。


架構

架構

架構

前端Client單純做http request/response發送,使用VScode extension內的thunderClient進行api測試 (會用的話,直接在terminal下curl指令也可以)


後端Server的RESTful API實作,依springboot專案常用架構進行分層

  • Controller:處理request/response,交由負責的service進行處理
  • Service:處理業務邏輯
  • Repository:處理資料存取
  • Mapper:處理DTO(Data Transfer Object),進行資料封裝


開發環境及工具

  • VScode
  • Java 21
  • Spring Boot 3.2.4


建立專案

如果是使用IntelliJ,可以直接建立SpringBoot專案,會在背後幫你從Spring Initializr完成點選的配置並下載到指定位置。一般編輯器無安裝其他擴充套件下,可以直接到下列網站,進行基本配置後下載專案。


Spring Initializr

Spring Initializr

  1. Project 以maven進行套件管理
  2. 3.0版以上的專案只支援Java17以上的版本,看來近期頁面又更新了
  3. 專案描述資訊保留預設,畢竟只是要熟悉框架
  4. dependency先選擇必要的項目,之後有缺再透過pom.xml加入後更新檔案即可


選好後可以直接點generate,產生專案的壓縮檔並下載。初次透過VScode打開解壓縮後的資料夾時,maven會把必要的依賴進行下載,會花比較多時間。

raw-image


直接執行程式跑起來看看,缺少資料庫設定而無法繼續執行,因此需要修改一下application.properties內的設定檔,另外也可以改用yaml格式進行設定撰寫。

raw-image


資料庫使用MySQL,VScode的擴充套件為Database Client JDBC,程式執行時連接到剛創建的資料庫demo_db。

raw-image


重新回到程式進入點執行,log顯示Tomcat在8080 port開始運作,可以在瀏覽器輸入http://localhost:8080/進行確認

raw-image

OK,伺服器有正常運作了,只是因為還沒有處理根目錄endpoint回傳的結果,因此出現預設的空白頁進行回傳,http狀態碼404。


實作

為確保功能正常,實作一個endpoint在http://localhost:8080/student,於瀏覽器搜索時預設以get進行請求發送。

raw-image

新增一個StudentController的類別,須加上@RestController進行註冊,讓Spring container管理bean的生命週期

getStudent方法使用@GetMapping,指定路徑到/student的請求都發來這裡進行處理,回傳Student物件。

使用record而不是原始的class,省去另外撰寫toString、equals、getter、setter等瑣碎的部分。


重新啟動程式確認一下結果。

raw-image

Spring Boot內整包的依賴內有個第三方套件Jackson,在資料回傳給前端時,會將物件轉換成JSON格式進行回傳,不用自行再另外對物件序列化進行處理。


也可以使用thunderClient發送get request,得到同樣的結果。

raw-image


至於資料庫存取的操作,JPA(Java Persistence API)使用要留到下一篇囉。


參考資源

  • Hahow for business - Java 工程師必備!Spring Boot 零基礎入門
  • FreeCodeCamp.org - Spring Boot & Spring Data JPA – Complete Course


12會員
59Content count
遇到的坑、解過的題、新知識的探索、舊時代的遺毒!? 工作後我發現,文件更新往往跟不上新需求的更迭,犯錯的歷史總是不斷重演。因此,我改變了方式,蒐集從程式上、系統上的每一次異常處理過程,好讓再次遇到相同的問題時能快速應變。此專題就是我的錯題本,期待日後不管在工作上或交流上遇到難題,都能輕鬆地應答:有什麼難的,我都踩過。
留言0
查看全部
發表第一個留言支持創作者!
Err500 的其他內容
在過年期間,利用集中時間跟完Mosh Hamedani的Next.js課程,掌握了前端至後端的技術應用。本文分享了學習過程中的收穫與成果,以及對於未來應用的展望。
巨集(Macro)是什麼? 第一次聽到這個詞是出現在excel,按下錄製鍵後,畫面上進行的操作會被記錄下來,可以重複回放執行前述操作。之後接觸C語言的#define,巨集又跟函數類似...
專案產生大量又瑣碎的作業做處理,眼下要從iReport的設定檔(jrxml)擷取每一項套印參數出來,提供給別人做Excel公式的資料表進行作業。
作為軟體工程師的年資也來到了三年半,即便業界普遍仰賴實力說話,幾場面試經驗下來,以拿門票來說,符合年資門檻還是比較容易獲得機會。畢竟守門人是人資,不太可能是技術主管優先,履歷這項門面總需要定期打理一番,順便回顧一下一路以來做了哪些努力,然而學習的過程我還蠻樂在其中...
htmx前陣子還只是網路迷因,近期拿來搭配go的系列影片越來越多了,兩者都可以用很少量的程式實作出功能,很適合拿來做些簡單的project。
用了10幾年的SONY耳掛式耳機,也是到了該汰換的時候。 雖然前陣子已經買了鐵三角ATH-CK1TW 藍芽無線耳機,主要拿來工作開會時使用。一般平日休閒還是想買個有線的耳罩式耳機,不用考慮電量問題,有線耗材在同價位音質表現上相對穩定,趁者網購點數還足夠,物色一下目標。
在過年期間,利用集中時間跟完Mosh Hamedani的Next.js課程,掌握了前端至後端的技術應用。本文分享了學習過程中的收穫與成果,以及對於未來應用的展望。
巨集(Macro)是什麼? 第一次聽到這個詞是出現在excel,按下錄製鍵後,畫面上進行的操作會被記錄下來,可以重複回放執行前述操作。之後接觸C語言的#define,巨集又跟函數類似...
專案產生大量又瑣碎的作業做處理,眼下要從iReport的設定檔(jrxml)擷取每一項套印參數出來,提供給別人做Excel公式的資料表進行作業。
作為軟體工程師的年資也來到了三年半,即便業界普遍仰賴實力說話,幾場面試經驗下來,以拿門票來說,符合年資門檻還是比較容易獲得機會。畢竟守門人是人資,不太可能是技術主管優先,履歷這項門面總需要定期打理一番,順便回顧一下一路以來做了哪些努力,然而學習的過程我還蠻樂在其中...
htmx前陣子還只是網路迷因,近期拿來搭配go的系列影片越來越多了,兩者都可以用很少量的程式實作出功能,很適合拿來做些簡單的project。
用了10幾年的SONY耳掛式耳機,也是到了該汰換的時候。 雖然前陣子已經買了鐵三角ATH-CK1TW 藍芽無線耳機,主要拿來工作開會時使用。一般平日休閒還是想買個有線的耳罩式耳機,不用考慮電量問題,有線耗材在同價位音質表現上相對穩定,趁者網購點數還足夠,物色一下目標。
你可能也想看
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
WORA, Write Once Run Anywhere Java 不依賴於任何平台,Java可以在任何平台上執行,前提是那平台上要有安裝JVM Java的執行流程
Thumbnail
下載完JDK之後,在本機的環境變數中加入此JDK的bin路徑以便系統能識別使用 javac 是java compiler
來到學期2-3的階段,第一個作業就是打造餐廳清單。原本認為經過電影清單的學習經歷之後,對於打造餐廳清單應該也不會太過困難;沒想到我花了2個月的時間才把作業完整交出去。 在寫餐廳清單的初期,第一個碰到的問題就是首頁無法秀出餐廳評分這個選項。我試著參考其他同學的作品也改了版面的設計,卻始終無法出現餐廳評
Thumbnail
位在通化街尾端,靠近六張犁的禾雀咖啡工作室,質樸的感覺是一家適合假日早晨來待上好一會兒的好去處。 主打自家烘培手沖及義式咖啡,最大特色還有自家製的麵包、甜點輕食,最喜歡吃的莫過於他們的鮮奶吐司。曾經住在這裡好長一段時間,週末去搶個一包可以在家裡烤來吃,是相當幸福的感覺。 冰羅馬咖啡則是我喝過最喜歡的
Thumbnail
abstract class = 抽象類別 interface = 介面 抽象類別與介面都無法建立物件。 1. 使用abstract關鍵字來建立抽象類別,interface關鍵字建立介面。 interface只能繼承interface,且可以繼承多個:
Thumbnail
繼承 在Java中,一個類可以由其他類派生。如果你要創建一個類,而且已經存在一個類具有你所需要的屬性或方法,那麼你可以將新創建的類繼承該類。 利用繼承的方法,可以重用已存在類的方法和屬性,而不用重寫這些代碼。被繼承的類稱為超類(super class),派生類稱為子類(subclass)。 繼承的特
Thumbnail
古早的年代想在網頁內埋 Java 還有 Java applet 可以用,在 Java applet 式微後,找來找去比較可以的辦法大概就是編譯成 WebAssembly 了吧! 想要把 Java 編譯成 WebAssembly,有下面三個工具可以選用
Thumbnail
  給對想當Java工程師又興趣的人類,也許你是學生,又或是你正想轉職,我希望你們都不會因為未知而害怕,這條路沒有那麼困難。
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
WORA, Write Once Run Anywhere Java 不依賴於任何平台,Java可以在任何平台上執行,前提是那平台上要有安裝JVM Java的執行流程
Thumbnail
下載完JDK之後,在本機的環境變數中加入此JDK的bin路徑以便系統能識別使用 javac 是java compiler
來到學期2-3的階段,第一個作業就是打造餐廳清單。原本認為經過電影清單的學習經歷之後,對於打造餐廳清單應該也不會太過困難;沒想到我花了2個月的時間才把作業完整交出去。 在寫餐廳清單的初期,第一個碰到的問題就是首頁無法秀出餐廳評分這個選項。我試著參考其他同學的作品也改了版面的設計,卻始終無法出現餐廳評
Thumbnail
位在通化街尾端,靠近六張犁的禾雀咖啡工作室,質樸的感覺是一家適合假日早晨來待上好一會兒的好去處。 主打自家烘培手沖及義式咖啡,最大特色還有自家製的麵包、甜點輕食,最喜歡吃的莫過於他們的鮮奶吐司。曾經住在這裡好長一段時間,週末去搶個一包可以在家裡烤來吃,是相當幸福的感覺。 冰羅馬咖啡則是我喝過最喜歡的
Thumbnail
abstract class = 抽象類別 interface = 介面 抽象類別與介面都無法建立物件。 1. 使用abstract關鍵字來建立抽象類別,interface關鍵字建立介面。 interface只能繼承interface,且可以繼承多個:
Thumbnail
繼承 在Java中,一個類可以由其他類派生。如果你要創建一個類,而且已經存在一個類具有你所需要的屬性或方法,那麼你可以將新創建的類繼承該類。 利用繼承的方法,可以重用已存在類的方法和屬性,而不用重寫這些代碼。被繼承的類稱為超類(super class),派生類稱為子類(subclass)。 繼承的特
Thumbnail
古早的年代想在網頁內埋 Java 還有 Java applet 可以用,在 Java applet 式微後,找來找去比較可以的辦法大概就是編譯成 WebAssembly 了吧! 想要把 Java 編譯成 WebAssembly,有下面三個工具可以選用
Thumbnail
  給對想當Java工程師又興趣的人類,也許你是學生,又或是你正想轉職,我希望你們都不會因為未知而害怕,這條路沒有那麼困難。