---
# System prepended metadata

title: Spring boot with Kotlin(1) - From zero to one

---

# Spring boot with Kotlin(1) - From zero to one
###### tags: `spring boot` `backend` `kotlin`

## 前言
* 本篇文章的筆者是開發 Android APP 有約 3 年經驗的 Android engineer
* 透過本篇文章留下自己的踩坑記錄
* 希望有類似經驗、有軟體經驗的開發人員，可以透過本文章快速入門
* 筆者在學習時，有搭配 [ChatGPT](https://chat.openai.com/) 協助

### IDE 選用
選擇 Android studio 的爸爸，也就是 Intellij IDEA，降低學習門檻

Intellij IDEA 分為 Ultimate 與 Community 兩種版本，前者只能免費 30 天，在筆者客家的狀況下選擇後者再搭配相關 plugin

本篇文章撰寫當下使用 `2023.2.1` 版本

### 語言選用
當然選擇 Android 的主力開發語言，Kotlin
筆者對 Java 也熟悉，因此未來處理 Java 相關程式碼也不是問題

### 框架選用
選擇 Spring boot

雖然 Kotlin 有 Ktor 可以用，不過目前還需要更多社群支持，且市場上相關職缺數量不多
在筆者對各類後端框架不熟悉的狀況下，先行學習主流框架除了可以降低不少開發成本外，先學會一種框架，對於未來接觸其他框架也會相對容易

## Hello world with Spring Boot
### 載入基本專案
Intellij IDEA Ultimate 可以直接建立 Spring boot 專案，new > project 即可
Intellij IDEA Community 則推薦透過 [`https://start.spring.io/`](https://start.spring.io/) 取得基礎專案

* Project 管理工具選擇 `Gradle - Kotlin` (Groovy 也可以，看個人習慣)
* Language 當然選擇 `Kotlin`
* Sprint boot 版本我選擇預設推薦的 3.1.3，預設版本在未來可能會更動，根據當前狀況選擇即可
* Metadata 任意輸入
  * 我記得某個開發標準中，package name 必須全部小寫，且不可用 - _ 等符號區分文字，因此相關文字我隨意輸入，先能 Hello world 再說
* Dependenices 需手動新增 `Spring Web`
  * 用來載入 Web controller，才能在對應路徑上載入功能 
  * 比如 `Hello World` :P

![](https://hackmd.io/_uploads/SkDsy_4R3.png)

根據圖內設定後，點選 Genarate 下載設定好的專案，並透過 Intellij IDEA 開啟即可

開啟後，等待幾分鐘載入 dependencies

### 安裝相關 Plugin (Community 版)
(Ultimate 版本可跳過本步驟)

網路上部分文章推薦安裝 `Spring Assistant` 來載入相關 Build 選項
可惜 `Spring Assistant` 已經停止維護，因此個人找到第三方維護版使用

https://zhuanlan.zhihu.com/p/602052378
https://github.com/ErickPang/intellij-spring-assistant/releases

本篇文章撰寫當下，有釋出相關版本給 `2023.2` 使用

在 IDE 中按下 settings，或透過 hotkeys `command + ,` 進入相關設定
搜尋 `Plugin`，並點選齒輪，再從硬碟載入剛才下載的第三方維護版

![](https://hackmd.io/_uploads/S10AF_VR2.png)


### Build and Run

先上運作圖

![](https://hackmd.io/_uploads/rk8fNuNC2.png)

![](https://hackmd.io/_uploads/ByuJ4dECh.png)

進入 {project name}/src/main/kotlin/{your package name}/{your application file}

並直接在該檔案的 main() 下方放上以下程式碼

```kotlin
fun main() {
    // ...
}

@RestController
class HomeController() {
	@GetMapping("/hello") // 建立 GET 
	fun getHelloString(): String {
		return "Hello World!"
	}
}
```
遇到 IDE 透過紅字提示錯誤時，透過 option + enter (其他系統用 alt + enter) import 相關功能

接著，透過 Gradle 的 `Tasks/application/bootRun` 執行 Project
(未來對測試有愛的話，選 bootTestRun 會跑測試)
(Ultimate 版本直接點選綠色三角形即可)

使用任意瀏覽器，輸入 `http://localhost:8080/hello`
這樣就可以看到經典的 `Hello World!` 了

![](https://hackmd.io/_uploads/rk8fNuNC2.png)

## Reference
* https://ithelp.ithome.com.tw/articles/10242205
* https://medium.com/@dorrgle/intellij-community-gradle-spring-boot%E9%96%8B%E7%99%BC%E7%92%B0%E5%A2%83%E8%A8%AD%E5%AE%9A-8bf9deb50f23

## 結語
成功讓 Hello world 運作後，筆者就立即寫下此篇文章，感覺後續的路還有點長 🫠

