Spring Boot with Kotlin 練功場(1)-第一個Application

Andy Lu
6 min readAug 12, 2020

前言

Spring Boot 是一個基於 Java 開發的 Web Framework,用來開發 Micro-Service (微服務),能夠產生出獨立以及產品等級的 Spring Application。

Spring Framework 需要許多設置才能使用,Spring Boot 實現了自動配置,簡化了專案搭建的複雜度。

由於Kotlin 可以跟 Java 相容, Spring Boot 也有Spring Boot with Kotlin 的版本。早先的版本是將 Java 的程式碼直接轉換成Kotlin,現在的版本已經使用 Kotlin 語言特性改寫。

接下來將介紹如何開啟一個 Spring Boot with Kotlin 專案,

Pre-requirement

IDE: IntelliJ Ultimate (建議使用 Ultimate 版,有許多方便的功能)
IDE版本:2020.2
Java:Java 8 以上

開啟一個新專案

  • 開啟 IntelliJ IDEA,選擇 + New Project
  • 在 New Project 頁面,選擇左側的 Spring Initializr ,Project SDK 選擇 JAVA 1.8 以上。
  • 註:Spring Initializr是 Ultimate 版獨有功能,如果是用Community 版,需要至 https://start.spring.io/ 建立專案。

Spring Initializr Project Setting

  • 依序填入 Group,Artifact
  • Type 選擇 Gradle
  • Language 當然選擇 Kotlin
  • Java Version 選擇 8 以上。
  • 其餘資訊視需求修改。

Dependencies

  • 選擇 Web -> Spring Web

Project Name & Location

  • 依照自己的需求,設定專案名稱 (Project name) 及路徑 (Project location)

把專案跑起來

方法1:按下工具列的三角形按鈕執行

方法2:在 Gradle Tab 中,點擊 Application->bootRun

方法3:在 Terminal 中,執行 ./gradlew bootRun

執行成功之後,可以在 Run 看到運行結果。

如果是用 Terminal 敲指令運行的,則是會在同一個 Terminal 視窗看到運行結果。

測試一下

  • 由於預設會使用 8080 port,開啟瀏覽器,輸入 127.0.0.1:8080 ,即可看到結果。
  • 目前因為沒有 Controller ,所以會出現錯誤頁面。

新增一 Controller

  1. 在 package 底下(EX: project_root\src\main\kotlin\[package]),新增一名為 HelloController 的 Kotlin 檔案。
  2. 加入底下範例程式碼:
@RestController
class HelloController{
@GetMapping("/hello")
fun sayHello() = "Hello Spring boot"
}

要點如下:

  • class HelloController 使用 @RestController ,這個註釋包含了 @Controller@ResponseBody,是 Spring4 之後才加入的註解。
  • sayHello() 會回傳一字串。
  • sayHello() 使用 @GetMapping('/hello') 註釋,表示此網站的後面接/hello,將會回傳此 Function 的結果。(Ex: 127.0.0.1:8080/hello)

測試 /hello

小結

利用 intelliJ Ultimate 版 內建的Spring Initializr 可以輕鬆設定好專案,並且運行也正常。

如果是使用intelliJ Community 版,雖然有網頁可以產生專案,可是使用上還是有差異,建議先使用 Ultimate 試用版來練習。

在 Kotlin Class 上加上註解 @RestController,即可讓 Kotlin class變成 RestController,在 Function 加上 @GetMapping 就能夠將URI指向該Function。

謝謝。

github:https://github.com/andyludeveloper/kotlin_spring_boot

參考

--

--

Andy Lu
Andy Lu

Written by Andy Lu

Android/Flutter developer, Kotlin Expert, like to learn and share.

No responses yet