why
Kotlin x Spring で Clean Architecture で REST API を作成して、テストを書きたくなった
https://qiita.com/kawasaki_dev/items/1a188878eb6928880256
これを参考にやっていく。
ゴール
-
/persons
の CRUD API がクリーンなアーキテクチャで設計されている- 全て package が分けられている
- Domain, Gateway, Usecase, これらに Unit テストがある
- API E2E, EndtoEnd テストが書かれている
- postgres DB に接続されている
Spring Initializer で Web でアプリ作成
このサイトで雛形が作れるらしい。
記事の通りに
springboot という artifact 名にして
言語を Kotlin にして
Project ビルダー?は Groovey を選択。
Spring Web ( MVC も REST も作れるらしい基礎? )
Thymleaf ( HTML を出すためのテンプレートエンジン )
Spring Data JPA ( SQL ラッパー )
H2 Database ( MySQL とかを簡単に作れるやつかな? )
これらの依存性を追加
Java は記事の 11 から 17 にする。
Springboot は 2.7.2 にした。
この URL を叩けば同じ構成で作成できる。
クエリにバージョンなどが入っているようだ。
Genarate ボタンを押すと
zip になって DL できる。
Ktor と同じみたい。
IntelliJ で開いてプロジェクト起動
現在なにか開いていたら Close Project してから
新たに何も開いていない状態から開く。
そうしないと
モジュールのなにも読み込まれない状態になってしまう。
全て閉じて見覚えのある JetBrains の画面から開くと
無事に読み込まれて
Spring が起動できた。
fun main(args: Array<String>) { runApplication<SpringbootApplication>(*args) println("kt") }
2022-08-08 07:22:40.110 INFO 1036058 --- [ main] c.e.springboot.SpringbootApplicationKt : Started SpringbootApplicationKt in 2.191 seconds (JVM running for 2.55)
kt
print を挟めばちゃんとプリントされる。
gradle の設定ファイルで依存ライブラリをみる
https://spring.pleiades.io/guides/tutorials/spring-boot-kotlin/
build.gradle.kts をみると
依存しているライブラリがわかる
plugins { id("org.springframework.boot") version "2.7.2" id("io.spring.dependency-management") version "1.0.12.RELEASE" kotlin("jvm") version "1.6.21" kotlin("plugin.spring") version "1.6.21" kotlin("plugin.jpa") version "1.6.21" }
plugins をみると基本的なライブラリがわかる
- Spring Boot 2.7.2
- JVM, spring のプラグイン, JPA, これらの 1.6.21
基礎ライブラリとしてこれらを使っていることが書いてある。
dependencies { implementation("org.springframework.boot:spring-boot-starter-data-jpa") implementation("org.springframework.boot:spring-boot-starter-thymeleaf") implementation("org.springframework.boot:spring-boot-starter-web") implementation("com.fasterxml.jackson.module:jackson-module-kotlin") implementation("org.jetbrains.kotlin:kotlin-reflect") implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") runtimeOnly("com.h2database:h2") testImplementation("org.springframework.boot:spring-boot-starter-test") }
- JPA
- ThymeLeaf
- Web
- H2 Database
これらが拡張ライブラリとして入っていることが確認できた。
JPA, Thymleaf, H2, これらのバージョンはここでは見れないらしい。
まとめ
Kotlin で Springboot のアプリを作るには
Spring Initializer で作成&DL して
ローカルで解凍して
何も開いていない IntelliJ で開く
これだけで作成できる。
今後
https://spring.pleiades.io/guides/tutorials/spring-boot-kotlin/
Kotlin Spring のガイドラインを読む
https://qiita.com/kawasaki_dev/items/1a188878eb6928880256#%E5%8F%82%E8%80%83%E6%83%85%E5%A0%B1
MVC での CRUD を試してみる
REST で CRUD を試してみる
テストを Gauge/Selenide に変更してみる
Top comments (0)