色気づいてサーバサイド Kotlin に興味を持ち始めたので勉強してみました。
構成
- SpringBoot: 2.1.4.RELEASE
- Kotlin: 1.3.30
- あと使用してるのはこの辺見てください
内容
Repositry
とりあえず SQL 実行できればいいと思ったので、使いづらいと思いながらも JdbcTemplate を使いました。
コンストラクタで JdbcTemplate をインジェクションする感じです。
ここのテストは H2 にアクセスして実際に SQL を発行します(application-unittest.properties を見てる)。テストすべきは SQL ですからね。
FlywayTest でテスト用の Fixture を入れてます。
JdbcTemplate でないとすると、選択肢としては Spring JPA なんでしょうか。ScalikeJDBC みたいなの無いかしら。
Service (依存 class を Injection するケース)
Repositry のように依存する奴は Mockito で Mock 化します。
昔は Mock のメンテコストが割と高かった気がするので使わないようにしてたのですが1、最近は簡単に使えますね。
Kotlin で Mockito 使うなら Mockito-Kotlin 使うべきですかね。
Mockito-Kotlin との出会いのきっかけ
Controller
依存する奴は Mockito で Mock 化するパターンで。
正常パターンは大丈夫っぽいですが、パラメータの validation とかは Server 立ち上げないとできないのが、アレだなと思いました(Kotlin 関係ない)。
Controller のパラメータとか
この辺が Kotlin でよかったと思えるところでしょうか。
data class にのアノテーションでちょっとハマりました(field:
の辺り)。
JSON にしても@JsonProperty
効かなくて焦りました。
field:
との出会いのきっかけ
body パラメータの validation がアノテーションで定義できるのは嬉しいですけど、Controller 呼び出し時のエラーハンドリングが面倒なのは皆さまいかがお過ごしでしょうか(Kotlin 関係ない)。
Integration
server 立ち上げて実際に API 呼び出すパターンです。
H2 にアクセスして SQL 発行します(application-integrationtest.properties)。
レスポンスの JSON の verify に JsonAssert 使ってるのですが、最近の人は何を使っているのでしょうか。org.hamcrest.Matchers 使うのがアレな気分です。
感想
- Kotlin について
- 結構 GitHub に Spring + Kotlin のサンプル上がってますね。Kotlin 好きが多いなw
- Kotlin 自体はとっつきやすいです。ただ、Spring と Scala が仲良しならなぁ...という思いが隠せません
- ktlint 入れて CI 回したり、Docker image がビルドできなくてハマった時間の方が長かったです
- エルビス演算子
?:
の命名センスに惚れた。でも他の言語でも使ってた
読んだ本
- 作者: Dmitry Jemerov,Svetlana Isakova,長澤太郎,藤原聖,山本純平,yy_yank
- 出版社/メーカー: マイナビ出版
- 発売日: 2017/10/31
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る
Kotlin Webアプリケーション 新しいサーバサイドプログラミング
- 作者: 長澤太郎
- 出版社/メーカー: リックテレコム
- 発売日: 2017/10/06
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
-
EasyMockとかね…↩