Open4
Kotlin学習ログ
公式
学習目的
- Kotlinの概要を把握する
- フレームワークにSpringBootを用いてAPI開発する
ざっくり概要を把握する
導入
以下の記事が非常にわかりやすかった
Spring BootでサーバーサイドKotlin入門 - Qiita
spring initializrの設定
Project:Gradle Project
Language:Kotlin
Spring Boot:2.7.4
Project Metadate:省略
Packaging:Jar
Java:11
Dependencies(比較のため既存のJavaプロジェクトを参考に指定)
- Spring Boot DevTools
- Lombok
- Spring Web
- Thymeleaf
- Spring Data JPA
- MySQL Driver
- Validation
Javaとの違いで悩んだポイント(※いずれも確証なし。後述の理由からの推測)
アノテーションの要不要
-
@Data
:不要- 理由 -> Kotlin自体がgetter/setterを勝手に作ってくれるため
-
@RequiredArgsConstructor
:不要- 理由 ->
xxxService(private val xxxRepository: XxxRepository) {...}
で記述可能なため
- 理由 ->
Entityのプロパティ(Javaでいうフィールド)の記述方法
-
var
かval
か ->val
- 理由 -> 値セットされたタイミング以降は不変が望ましいため
- プロパティの初期値について、型をNullable型にしてnullにするか、ゼロ値(0や"")にするか ->
Nullable型にしてnullを入れる-> コンストラクタとして引数に設定したら、初期値は不要だった。- 理由 ->
何かしらの理由で値がセットされなかった場合に、DB側で拒否することができる(not null制約があれば)。初期値があると登録されてしまう可能性がある。
- 理由 ->
エラー・不具合対応
Redeclaration: XxxController
)
APIレスポンスでJSONの中身が空になる + アプリが起動できなくなる(起こった事
- レスポンスのJSONの中身が全て空になった
- その後、
Redeclaration: XxxController
というエラーが発生し、アプリが起動できなくなった
解決方法
リビルドする。
(メニューバー -> Build
タブ -> Rebuild Project
)
経緯
- 練習がてらデータを登録するAPIを作成
- POSTMANからPOSTリクエストを送信
- DBにデータは登録されるが、レスポンスのJSONが空という状況に。
- データを全件取得するAPIを作成
- POSTMANからGETリクエストを送信
- レコードの数だけJSONが返ってくるが、中身が空という奇妙な状態に。
- 色々いじってみるも解決せず、その上アプリが起動できなくなる。エラーメッセージは
Redeclaration: XxxController
- 調べてみると以下の記事がヒット。同じようにリビルドしたところ、エラーメッセージは解消。
- それと同時にJSONの中身がちゃんと返ってくるようになった。
結論
原因不明の異常時にはとりあえずリビルドしてみる。