【Java】SpringBoot 專案初始建置

更新於 發佈於 閱讀時間約 5 分鐘

前言

以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


avatar-img
13會員
65內容數
遇到的坑、解過的題、新知識的探索、舊時代的遺毒!? 工作後我發現,文件更新往往跟不上新需求的更迭,犯錯的歷史總是不斷重演。因此,我改變了方式,蒐集從程式上、系統上的每一次異常處理過程,好讓再次遇到相同的問題時能快速應變。此專題就是我的錯題本,期待日後不管在工作上或交流上遇到難題,都能輕鬆地應答:有什麼難的,我都踩過。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
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 藍芽無線耳機,主要拿來工作開會時使用。一般平日休閒還是想買個有線的耳罩式耳機,不用考慮電量問題,有線耗材在同價位音質表現上相對穩定,趁者網購點數還足夠,物色一下目標。
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
先學習 HTML, CSS, JavaScript 基礎觀念, 再透過實作專案,慢慢熟悉不同的語法使用方式。
Thumbnail
此章節旨在引導讀者如何建立Java開發環境,包括安裝JDK、使用命令行工具編寫和運行Java程式,以及如何在Visual Studio Code、IntelliJ IDEA和Eclipse等IDE中設置和使用Java環境。
Thumbnail
此章節旨在介紹Java的基本語法、註解和變數的使用。透過學習,讀者將了解Java程式的基本結構、程式進入點的定義、如何撰寫單行和多行註解,以及如何宣告和初始化變數。
Thumbnail
這篇文章的目的是對Java程式設計語言進行介紹,包括它的特性、應用範疇、主要使用者,以及相關的學習資源和常見的庫與框架。此外,它也提供了一些學習Java的渠道,以及與Java相關的其他知識。
對於想要嘗試學習前端技術,卻還沒下定決心或不知道是否合適的初心者,六角的體驗營就像是前端開發的新手村,提供基礎的新手教學,讓你對前端有基礎的概念;教你最基本的心法,讓你去打幾隻簡單的怪累積一點經驗值。
Thumbnail
核心元件 Spring Boot:Spring Cloud的基礎框架。 Spring Cloud Starters:Spring Boot的依賴管理。 Consul:微服務系統的註冊中心。 Eureka:微服務系統的註冊中心。 Feign:簡化微服務之間的溝通方式。 Ribbon:處理程
Thumbnail
部署Consul服務 docker run --name consul -p xxxx:xxxx -v /tmp/consul/conf/:/consul/conf/ -v /tmp/consul/data/:/consul/data/ -d consul 於pom.xml設定Spring
Thumbnail
建立Maven專案 於pom.xml設定Spring Boot <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://
Thumbnail
可能包含敏感內容
先說一下我的背景,非本科系從 2022/3 開始接觸到前端領域,在摸索過程中遇到六角學院,買了 HTML 和 CSS 課程從基礎學起。
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
先學習 HTML, CSS, JavaScript 基礎觀念, 再透過實作專案,慢慢熟悉不同的語法使用方式。
Thumbnail
此章節旨在引導讀者如何建立Java開發環境,包括安裝JDK、使用命令行工具編寫和運行Java程式,以及如何在Visual Studio Code、IntelliJ IDEA和Eclipse等IDE中設置和使用Java環境。
Thumbnail
此章節旨在介紹Java的基本語法、註解和變數的使用。透過學習,讀者將了解Java程式的基本結構、程式進入點的定義、如何撰寫單行和多行註解,以及如何宣告和初始化變數。
Thumbnail
這篇文章的目的是對Java程式設計語言進行介紹,包括它的特性、應用範疇、主要使用者,以及相關的學習資源和常見的庫與框架。此外,它也提供了一些學習Java的渠道,以及與Java相關的其他知識。
對於想要嘗試學習前端技術,卻還沒下定決心或不知道是否合適的初心者,六角的體驗營就像是前端開發的新手村,提供基礎的新手教學,讓你對前端有基礎的概念;教你最基本的心法,讓你去打幾隻簡單的怪累積一點經驗值。
Thumbnail
核心元件 Spring Boot:Spring Cloud的基礎框架。 Spring Cloud Starters:Spring Boot的依賴管理。 Consul:微服務系統的註冊中心。 Eureka:微服務系統的註冊中心。 Feign:簡化微服務之間的溝通方式。 Ribbon:處理程
Thumbnail
部署Consul服務 docker run --name consul -p xxxx:xxxx -v /tmp/consul/conf/:/consul/conf/ -v /tmp/consul/data/:/consul/data/ -d consul 於pom.xml設定Spring
Thumbnail
建立Maven專案 於pom.xml設定Spring Boot <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://
Thumbnail
可能包含敏感內容
先說一下我的背景,非本科系從 2022/3 開始接觸到前端領域,在摸索過程中遇到六角學院,買了 HTML 和 CSS 課程從基礎學起。
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。