我是從其他語言環境(AS400 Cobol)轉換到Java開發,經過一段端時間的學習經驗,分享從零開始以Spring Boot架構開發Java Web 應用程式專案的基礎與架構,給沒有Spring Boot開發經驗,但已經有程式語言基礎的人參考 (是不是Java不重要,主要是有程式語言邏輯經驗)。
** Java 17 & Maven 3.9.11
安裝參考: https://ithelp.ithome.com.tw/articles/10398261
** VsCode 程式編輯程式
安裝參考: https://ithelp.ithome.com.tw/articles/10398356









完成以上建置後,VScod右下角顯示建置成功訊息,並請您點選 "Open"鍵開啟專案
開啟專案後,開始進入專案程式開發畫面
剛開始個人以Eclipse開發Java專案(包含Spring Boot),但VScode不像其他IDE整合開發工具(eclipse / IntelliJ IDEA),將所有需要開發程式的工具整合在一起提供,而是基於文字編輯器上,外掛各種套件,例如Java套件(Java Extension)開發Java程式語言相關、Spring 套件(Spring Boot Tools Extension)開發Spring Boot相關工具等等,但終歸基本功能還是文件編輯器本色,所以依使用套件而其操作功能、設定有些差異。
點選以下三個點,可以顯示及選擇套件各套件支援的內容,依這裡建置的Spring Boot專案來說,他是基於MAVEN管理的JAVA PROJECT,並可執行於Server的專案,所以可以選擇打勾選擇開啟或關播其功能

EXPLORER視窗內容(點選三個點),會依安裝Extension有所不同:
a. 按 F1 鍵,開啟Command Palette

b. 輸入terminal select default,選擇Terminal: Select Default Profile

c. 選擇 Command Prompt C:\Windows\System32\cmd.exe

d. 重啟 VSCODE後再開啟 terminal 會是 CMD.exe

a. 選擇 File -> Preferences -> settings

b. 搜尋(輸入) workbench.editor.wrapTabs後,勾選 Wrap Tabs

c. Open File Tab會多行顯示結果如下

因為是Java Project,所以EXPLORER視窗以展開"Java Projects" 項目使用

說明:
JAVA PROJECT/
├── webapp/ (project root 跟目錄)
│ ├── src/main/java/ (Maven Java 程式 root 跟目錄)
│ │ └── tw.lewishome.webapp/ (web Application 程式 root 跟目錄)
│ │ ├── ServletInitializer (部屬於web Server執行的預設Servlet)
│ │ └── WebappApplication (Java 指令執行的 Main method程式)
│ ├── src/main/resources/ (spring Boot 預設靜態資料)
│ │ ├── static/ ( css、js、img 等 html使用的靜態資料)
│ │ ├── templates/ ( 前端 html 程式)
│ │ └── application.properties (spring boot 啟動的參數)
│ ├── src/test/java/ (Maven Junit單元測試程式 Root 跟目錄
│ │ └── tw.lewishome.webapp/ (Maven web Application 單元測試程式 root 跟目錄)
│ │ └── WebappApplicationTests (預設 WebappApplication的單元測試程式)
....
└── pom.xml (maven 設定檔,於 project root跟目錄)
Maven 專案的核心設定檔,它使用 XML 格式來描述專案的 專案物件模型 (Project Object Model),包含專案的各種資訊,如專案座標(groupId、artifactId、version)、依賴管理、構建配置 和其他專案相關的屬性。這個檔案讓 Maven 能夠自動化地構建、管理專案的依賴和執行構建過程。
在左邊 EXPLORER視窗,"WEBAPP"項目,於 "Pom.xml"檔案,點兩下Mouse左鍵開啟,或於 "JAVA PROJECTS"項目
展開"WEBAPP",再於 "Pom.xml"檔案,點兩下Mouse左鍵開啟。

WebappApplication 是 Spring Boot 應用程式的主要入口點。此程式以 Java Command 執行Spring boot 專案時,提供負責啟動應用程式的 main Method。
若佈署到 web Server時,將不會需要此 main Method作為應用程式的主要入口點。
cmd /C "C:\Users\lewis\.vscode\extensions\redhat.java-1.47.0-win32-x64\jre\21.0.8-win32-x86_64\bin\java.exe @C:\Users\lewis\AppData\Local\Temp\cp_6fswok5ty580n5svwxc12rqgh.argfile tw.lewishome.webapp.WebappApplication "
ServletInitializer 是 Spring Boot 應用程式的初始化,主要功能是為 Spring Boot 應用程式部屬到 Web Server時,負責初始化系統配置。
是 Spring Boot 應用程式的核心設定檔,它使用簡單的鍵值對 (key-value) 格式,每一行設定一個屬性,這裡設定跟執行環境無關的專案的各種配置。
注意spring boot對application.properties設計特性:
a. 執行環境相關的會以spring.profiles.active變數,尋找application-${spring.profiles.active}.properties覆蓋變數值或設定專屬環境變數。
b. Web server 通常另外設定system 變數,覆蓋此變數值 ,例如: spring.profiles.active=jboss ,應用系統需要application-jboss.properties配置
c. OS 環境變數也可以覆蓋此變數,但需要以底線取代 "." 例如 : spring_profiles_active=uat
基本格式:
# Sprint Boot 會以spring.profiles.active變數,尋找application-${spring.profiles.active}.properties
# 以下是設定會自動找尋 application-dev.properties載入設定
# Web server 通常另外設定system 變數,覆蓋此變數值 ,例如: spring.profiles.active=jboss ,應用系統需要application-jboss.properties配置
# OS 環境變數也會覆蓋此變數,但需要以底線取代 "." 例如 : spring_profiles_active=uat
spring.profiles.active=dev
#設定專案war檔案外部 External 靜態資源路徑
spring.web.resources.static-locations=classpath:/static/,file:/webappData
#設定Spring boot web service port 對Jboss/liberty等 web Server 無效。
server.port=8080
將提供於專案中各個模組重複使用的通用工具類別與方法: