環境構築は昨日やったので今日はskeleton作っていきます
公式ドキュメント、英語でも気にしない雰囲気わかれば良し
Building web applications with Spring Boot and Kotlin
Creating a New Projectの項目で
Using the Initializr Websiteとコマンドライン、IntelliJ IDEA Ultimateを使う手順とかGradleじゃなくてMavenの手順とか紹介されているが、素直に一番上を使用していきます。
いっつも思うんだけどinitializrのzrの部分、よくzerと書いてしまうけどスペルはzrが正しいんだよな。
追加するよう言われているDependenciesは以下の通り
plugin | 内容 |
---|---|
Spring Web | おなじみのMVCするやつ |
Mustache | 意味は「口ひげ」web テンプレートシステム 一応いれる |
Spring Data JPA | こちらもおなじみのJPA DBに関してはちょっとあとで自分でやりたいので今回は外しとく |
H2 Database | 同じく外しとく |
Spring Boot DevTools | これもおなじみのあれ 開発中の変更がすぐ反映されるよ |
これでGENERATEボタンを押すと(Initializrで設定した名前).zipファイルがダウンロードされる。
公式チュートリアルではGradle解説みたいなこと言ってるのでIntelliJで開いていこう。
zip解凍してこちらに移動。
# IntelliJのデフォのディレクトリに持っていく
$ mv (解凍したtamesiフォルダ) ~/IdeaProjects
IntelliJでopenを選択し↑のディレクトリを指定。
今回入れたpluginとかmain関数とかHtmlControllerとか解説されてるけど作りたいのはAPIなので全部飛ばします。
kotlinに触るのがガチ初めてなので文法とかはとほほ先生にお世話になりつつ、書いたのがこれ。
コントローラー (jp/gooye/toy/tamesi/controller/TamesiController.kt)
```kt:jp/gooye/toy/tamesi/controller/TamesiController.kt
package jp.gooye.toy.tamesi.controller;
import jp.gooye.toy.tamesi.model.TamesiResponse
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
class TamesiController {
@GetMapping("/tamesi")
fun welcome() = TamesiResponse(message = "hello world!!")
}
リソース(jp/gooye/toy/tamesi/model/TamesiResponse.kt)
```kt:jp/gooye/toy/tamesi/model/TamesiResponse.kt
package jp.gooye.toy.tamesi.model
data class TamesiResponse(var message: String)
あ、jdkのバージョン指定とかIntelliJの設定とかgradleの導入手順とか書き忘れてるな……まあいいかjenvだけ念の為合わせとこ。
intelliJの中でターミナル開いて
$ jenv local 17.0.9
$ java --version
openjdk 17.0.9 2023-10-17
OpenJDK Runtime Environment Homebrew (build 17.0.9+0)
OpenJDK 64-Bit Server VM Homebrew (build 17.0.9+0, mixed mode, sharing)
この2つのktファイルを追加して、intelliJの右上のぞうさんマークから実行してみる
gradle clean bootRun
springの起動ログが見えたら、
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.2.2)
(中略)
2024-02-21T19:05:42.670+09:00 INFO 18060 --- [ restartedMain] j.gooye.toy.tamesi.TamesiApplicationKt : Started TamesiApplicationKt in 0.759 seconds (process running for 1.007)
curl!
$ curl localhost:8080/tamesi
{"message":"hello world!!"}
ローカルで動くとこまで行きました。
明日はいよいよDockerに触ります。