2024-03-04に更新

環境構築は昨日やったので今日はskeleton作っていきます

公式ドキュメントのチュートリアルをチラ見しながら進める

公式ドキュメント、英語でも気にしない雰囲気わかれば良し
Building web applications with Spring Boot and Kotlin

initializr使ってskeletonを取得

Creating a New Projectの項目で
Using the Initializr Websiteとコマンドライン、IntelliJ IDEA Ultimateを使う手順とかGradleじゃなくてMavenの手順とか紹介されているが、素直に一番上を使用していきます。

spring initializr

いっつも思うんだけどinitializrのzrの部分、よくzerと書いてしまうけどスペルはzrが正しいんだよな。

追加するよう言われているDependenciesは以下の通り

plugin 内容
Spring Web おなじみのMVCするやつ
Mustache 意味は「口ひげ」web テンプレートシステム 一応いれる
Spring Data JPA こちらもおなじみのJPA DBに関してはちょっとあとで自分でやりたいので今回は外しとく
H2 Database 同じく外しとく
Spring Boot DevTools これもおなじみのあれ 開発中の変更がすぐ反映されるよ

spring initializr

これでGENERATEボタンを押すと(Initializrで設定した名前).zipファイルがダウンロードされる。

作ったskeletonをintelliJで開いて編集する

公式チュートリアルでは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

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に触ります。


gooye-g

初心者

所有者限定モードのためこのボードには投稿できません
コメント