【Java】SpringBoot 專案初始建置

揚
發佈於Err500
2024/03/24閱讀時間約 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


10會員
54內容數
遇到的坑、解過的題、新知識的探索、舊時代的遺毒!? 工作後我發現,文件更新往往跟不上新需求的更迭,犯錯的歷史總是不斷重演。因此,我改變了方式,蒐集從程式上、系統上的每一次異常處理過程,好讓再次遇到相同的問題時能快速應變。此專題就是我的錯題本,期待日後不管在工作上或交流上遇到難題,都能輕鬆地應答:有什麼難的,我都踩過。
留言0
查看全部
發表第一個留言支持創作者!